Değişkenleri Paylaşma

Sorun bildirin Kaynağı göster Gece · 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. 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. Kod yeniden düzenleme ve kod yeniden kullanımı, bu tür otomatik değişiklikleri önleyebilir.

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. Genellikle, genel sabitleri adlandırmak için büyük harf kullanın.

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 dosyaları, BUILD dosyalarında kullanılabilecek tanımları (değişkenler ve işlevler) içerir.

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