Variáveis de compartilhamento

Informar um problema Ver código-fonte

Os arquivos BUILD devem ser simples e declarativos. Eles geralmente consistem em uma série de declarações de destino. À medida que sua base de código e seus arquivos BUILD aumentam, você provavelmente vai notar algumas duplicações, como estas:

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

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

Normalmente, não há problemas com a duplicação de código em arquivos BUILD. 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, uma ferramenta pode ler e atualizar arquivos BUILD para adicionar dependências ausentes. A refatoração e a reutilização de código podem impedir esse tipo de modificação automatizada.

Se for útil compartilhar valores (por exemplo, se os valores precisarem ser sincronizados), você pode introduzir 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 para nomear constantes globais.

Como compartilhar variáveis em vários arquivos BUILD

Se for necessário compartilhar um valor entre vários arquivos BUILD, será necessário colocá-lo em um arquivo .bzl. Os arquivos .bzl contêm definições (variáveis e funções) que podem ser usadas 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"],
)