Los archivos BUILD
deben ser simples y declarativos. Por lo general, consistirán en una serie de declaraciones de objetivos. A medida que tu base de código y tus archivos BUILD
crezcan, probablemente notarás cierta duplicación, como las siguientes:
cc_library(
name = "foo",
copts = ["-DVERSION=5"],
srcs = ["foo.cc"],
)
cc_library(
name = "bar",
copts = ["-DVERSION=5"],
srcs = ["bar.cc"],
deps = [":foo"],
)
Por lo general, la duplicación de código en los archivos BUILD
no es un problema. Esto puede hacer que el archivo sea más legible: cada declaración se puede leer y comprender sin ningún contexto. Esto es importante no solo para los humanos, sino también para las herramientas externas. Por ejemplo, una herramienta podría leer y actualizar archivos BUILD
para agregar dependencias faltantes.
La refactorización y la reutilización del código pueden evitar este tipo de modificación automatizada.
Si es útil compartir valores (por ejemplo, si los valores deben mantenerse sincronizados), puedes introducir una variable:
COPTS = ["-DVERSION=5"]
cc_library(
name = "foo",
copts = COPTS,
srcs = ["foo.cc"],
)
cc_library(
name = "bar",
copts = COPTS,
srcs = ["bar.cc"],
deps = [":foo"],
)
Ahora, varias declaraciones usan el valor COPTS
. Por convención, usa letras mayúsculas para nombrar las constantes globales.
Cómo compartir variables en varios archivos BUILD
Si necesitas compartir un valor en varios archivos BUILD
, debes colocarlo en un archivo .bzl
. Los archivos .bzl
contienen definiciones (variables y funciones) que se pueden usar en archivos BUILD
.
En path/to/variables.bzl
, escribe lo siguiente:
COPTS = ["-DVERSION=5"]
Luego, puedes actualizar tus archivos BUILD
para acceder a la variable:
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"],
)