Değişkenleri Paylaşma

BUILD dosyaları basit ve bildirimsel olacak şekilde tasarlanmıştır. Bunlar genellikle bir dizi hedef bildirimden oluşur. Kod tabanınız ve BUILD dosyalarınız büyüdükçe, aşağıdaki gibi yinelemeleri 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 kopyalama genellikle bir sorun oluşturmaz. Bu şekilde dosya daha okunaklı hale gelir: Her beyan herhangi bir bağlam olmadan okunup anlaşılabilir. Bu sadece insanlar için değil, dış araçlar için de önemli. Örneğin bir araç, eksik bağımlılıkları eklemek için BUILD dosyalarını okuyup güncelleyebilir. Kodun yeniden düzenlenmesi ve kodların yeniden kullanılması, bu tür otomatik değişiklikleri engelleyebilir.

Değerleri paylaşmak sizin için faydalıysa (örneğin, değerlerin senkronize tutulması 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 bildirimde COPTS değeri kullanılıyor. Genel sabitleri adlandırmak için büyük harfleri kullanın.

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

Bir değeri birden fazla BUILD dosyasında paylaşmanız gerekiyorsa değeri bir .bzl dosyasına koymanız gerekir. .bzl dosyaları, BUILD dosyası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 dosyanı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"],
)