Değişkenleri Paylaşma

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

BUILD dosyaları basit ve bildirim amaçlı olmalıdır. Genellikle bir dizi hedef beyanından oluşur. Kod tabanınız ve BUILD olarak büyüdükçe aşağıdaki gibi bir yineleme fark edebilirsiniz:

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

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

BUILD dosyalarında kod yinelenmesi genellikle sorun değildir. Bu, dosyayı daha okunabilir: her beyan, herhangi bir bağlam olmadan okunup anlaşılabilir. Bu sadece insanlar için değil, harici araçlar için de önemli. Örneğin, araç, eksik bağımlılıkları eklemek için BUILD dosyalarını okuyabilir ve güncelleyebilir. Kodun yeniden düzenlenmesi ve kodun yeniden kullanılması bu tür otomatik tıklayın.

Değerleri paylaşmak yararlı oluyorsa (örneğin, değerlerin senkronize edilmesi gerekiyorsa) şuna bir değişken ekleyebilirsiniz:

COPTS = ["-DVERSION=5"]

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

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

Artık birden fazla beyanda COPTS değeri kullanılıyor. Kural olarak, büyük harf kullanın ve global sabit değerleri adlandırmak için kullanılan harflerdir.

Birden çok BUILD dosyasında değişken paylaşma

Birden fazla BUILD dosyasında bir değer paylaşmanız gerekiyorsa onu yerleştirmeniz gerekir .bzl dosyasında. .bzl dosya tanımlar (değişkenler ve işlevler) içeriyor BUILD dosyada kullanılabilir.

path/to/variables.bzl dilinde şunu yazın:

COPTS = ["-DVERSION=5"]

Ardından, değişkene erişmek için BUILD dosyalarınızı güncelleyebilirsiniz:

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