Cómo compartir variables

Informa un problema Ver código fuente

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