Variáveis de compartilhamento

Informar um problema Mostrar fonte Por noite · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Os arquivos BUILD precisam ser simples e declarativos. Eles normalmente consistem em uma série de declarações de destino. Como base de código e seu BUILD arquivos ficarem maiores, você provavelmente notará alguma duplicação, como:

cc_library(
  name = "foo",
  copts = ["-DVERSION=5"],
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = ["-DVERSION=5"],
  srcs = ["bar.cc"],
  deps = [":foo"],
)

A duplicação de código em arquivos BUILD normalmente é aceitável. Isso pode tornar o arquivo mais legível: cada declaração pode ser lida e compreendida sem qualquer contexto. Isso é importante não só para humanos, mas também para ferramentas externas. Por exemplo, ferramenta pode ler e atualizar arquivos BUILD para adicionar as dependências ausentes. A refatoração e a reutilização do código podem evitar esse tipo de modificação.

Se for útil compartilhar valores (por exemplo, se os valores precisarem ser sincronizados), introduza uma variável:

COPTS = ["-DVERSION=5"]

cc_library(
  name = "foo",
  copts = COPTS,
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = COPTS,
  srcs = ["bar.cc"],
  deps = [":foo"],
)

Várias declarações agora usam o valor COPTS. Por convenção, use letras maiúsculas letras para nomear constantes globais.

Como compartilhar variáveis em vários arquivos BUILD

Se você precisar compartilhar um valor em vários arquivos BUILD, coloque-o em um arquivo .bzl. Os arquivos .bzl contêm definições (variáveis e funções) que pode ser usado em arquivos BUILD.

Em path/to/variables.bzl, escreva:

COPTS = ["-DVERSION=5"]

Em seguida, atualize seus arquivos BUILD para acessar a variável:

load("//path/to:variables.bzl", "COPTS")

cc_library(
  name = "foo",
  copts = COPTS,
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = COPTS,
  srcs = ["bar.cc"],
  deps = [":foo"],
)