El propósito de los archivos BUILD
es que sean simples y declarativos. Por lo general,
constan de una serie de declaraciones de objetivos. Como tu base de código y tu BUILD
Si archivos adjuntos se agrandan, es probable que notes algunos duplicados, como los 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 archivos BUILD
es correcta. Esto puede hacer que el archivo sea más
legible: cada declaración se puede leer y comprender sin ningún contexto. Esta
es importante, no solo para los humanos, sino también para las herramientas externas. Por ejemplo, un
Es posible que la herramienta pueda leer y actualizar archivos BUILD
para agregar las dependencias que faltan.
La refactorización y la reutilización de código pueden impedir este tipo de procesos
en caso de que haya modificaciones.
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"],
)
Varias declaraciones ahora usan el valor COPTS
. Por convención, usa mayúsculas
letras 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 puede 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"],
)