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 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ı okuyup güncelleyebilir.
Kodun yeniden düzenlenmesi ve kodun yeniden kullanılması 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. Kural olarak, global sabit değerleri adlandırmak için
büyük harfle başlayın.
Birden fazla BUILD dosyası arasında değişken 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"],
)