Değişkenleri Paylaşma

Sorun bildirin Kaynağı göster

BUILD dosyaları basit ve bildirim amaçlı 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, aşağıdaki gibi bazı yinelemeler 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 şekilde dosya 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, bir 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 değişiklikleri önleyebilir.

Değerleri paylaşmak yararlı oluyorsa (örneğin, değerlerin senkronize edilmesi gerekiyorsa) 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, global sabit değerleri adlandırmak için büyük harfle başlayın.

Birden çok BUILD dosyasında değişken 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 ş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"],
)