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"],
)