Cómo compartir variables

Informar un problema Ver fuente Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

El propósito de los archivos BUILD es que sean simples y declarativos. Por lo general, consistirán en una serie de declaraciones de destino. 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 las personas, 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 evitar este tipo de modificación automática.

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.

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