Variáveis de compartilhamento

Relatar um problema Conferir código-fonte Por noite · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Os arquivos BUILD precisam ser simples e declarativos. Eles normalmente consistem em uma série de declarações de segmentação. Como base de código e seu BUILD arquivos ficarem maiores, você provavelmente notará alguma duplicação, como:

cc_library(
  name = "foo",
  copts = ["-DVERSION=5"],
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = ["-DVERSION=5"],
  srcs = ["bar.cc"],
  deps = [":foo"],
)

A duplicação de código em arquivos BUILD normalmente é aceitável. Isso pode tornar o arquivo mais legível: cada declaração pode ser lida e compreendida sem qualquer contexto. Isso é importante não só para humanos, mas também para ferramentas externas. Por exemplo, ferramenta pode ler e atualizar arquivos BUILD para adicionar as dependências ausentes. A refatoração e a reutilização do código podem evitar esse tipo de modificação.

Se for útil compartilhar valores (por exemplo, se os valores precisarem ser sincronizados), introduza uma variável:

COPTS = ["-DVERSION=5"]

cc_library(
  name = "foo",
  copts = COPTS,
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = COPTS,
  srcs = ["bar.cc"],
  deps = [":foo"],
)

Várias declarações agora usam o valor COPTS. Por convenção, use letras maiúsculas letras para nomear constantes globais.

Como compartilhar variáveis em vários arquivos BUILD

Se você precisar compartilhar um valor em vários arquivos BUILD, será necessário colocá-lo. em um arquivo .bzl. Os arquivos .bzl contêm definições (variáveis e funções) que pode ser usado em arquivos BUILD.

Em path/to/variables.bzl, escreva:

COPTS = ["-DVERSION=5"]

Em seguida, atualize seus arquivos BUILD para acessar a variável:

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