Değişkenleri Paylaşma

Sorun bildir Kaynağı göster Nightly · 8.0 · 7.4 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

BUILD dosyalarının basit ve açıklayıcı olması amaçlanmıştır. Bunlar genellikle bir dizi hedef beyanından oluşur. Kod tabanınız ve BUILD dosyalarınız büyüdükçe bazı kopyalamalar olduğunu fark edebilirsiniz. Örneğin:

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 yinelemesi genellikle sorun teşkil etmez. Bu, dosyayı daha okunaklı hale getirebilir: Her beyan, bağlam olmadan okunup anlaşılabilir. Bu, yalnızca kullanıcılar için değil, harici araçlar için de önemlidir. Örneğin, bir araç eksik bağımlılıkları eklemek için BUILD dosyalarını okuyup güncelleyebilir. Kod yeniden düzenleme ve kod yeniden kullanımı, bu tür otomatik değişiklikleri önleyebilir.

Değerleri paylaşmak yararlıysa (örneğin, değerlerin senkronize tutulması gerekiyorsa) bir değişken kullanabilirsiniz:

COPTS = ["-DVERSION=5"]

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

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

Birden fazla beyan artık COPTS değerini kullanıyor. Genellikle, genel sabitleri adlandırmak için büyük harf kullanın.

Değişkenleri birden fazla BUILD dosyası arasında paylaşma

Bir değeri birden fazla BUILD dosyasında paylaşmanız gerekiyorsa .bzl dosyasına koymanız gerekir. .bzl dosyaları, BUILD dosyalarında kullanılabilecek tanımları (değişkenler ve işlevler) içerir.

path/to/variables.bzl alanına şunları 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"],
)