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