Los archivos BUILD deben ser simples y declarativos. Por lo general, consisten en una serie de declaraciones de destino. A medida que tu base de código y tus BUILD
archivos aumenten de tamaño, es probable que notes cierta duplicación, como la siguiente:
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 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 las personas, sino también para las herramientas externas. Por ejemplo, una
herramienta podría leer y actualizar BUILD archivos para agregar dependencias faltantes.
La refactorización y la reutilización de código podrían 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 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"],
)