Los archivos BUILD
están diseñados para ser simples y declarativos. Por lo general, consistirán en una serie de declaraciones de destino. A medida que aumente tu base de código y tus archivos BUILD
, es probable que notes algunas duplicaciones, 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"],
)
La duplicación de código en archivos BUILD
suele ser adecuada. 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 las personas, sino también para las herramientas externas. Por ejemplo, una herramienta puede leer y actualizar archivos BUILD
para agregar dependencias faltantes.
La refactorización y la reutilización de códigos pueden evitar este tipo de modificaciones automatizadas.
Si resulta útil compartir valores (por ejemplo, si los valores deben mantenerse sincronizados), puedes ingresar 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.
Comparte variables en varios archivos BUILD
Si necesitas compartir un valor entre 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"],
)