Değişkenleri Paylaşma

Sorun bildirin Kaynağı göster

BUILD dosyaları basit ve anlaşılır olmalıdır. Bunlar genellikle bir dizi hedef beyandan oluşur. Kod tabanınız ve BUILD dosyalarınız büyüdükçe muhtemelen bazı tekrarlar görebilirsiniz:

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 uygundur. Bu, dosyayı daha okunabilir hale getirebilir: Her beyan, herhangi bir bağlam olmadan okunabilir ve anlaşılabilir. Bu hem insan hem de dışarıdan araçlar için önemli. Ö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 engelleyebilir.

Değerleri paylaşmak faydalıysa (örneğin, değerlerin senkronize durumda 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 tanımlama bilgisi artık COPTS değerini kullanıyor. Genel olarak, sabit değerleri adlandırmak için büyük harfler kullanın.

Değişkenleri birden çok DERLE dosyasında paylaşma

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

path/to/variables.bzl dilinde şu ifadeyi 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"],
)