BUILD dosyaları basit ve bildirimsel olacak şekilde tasarlanmıştır. Genellikle bir dizi hedef beyanından oluşurlar. Kod tabanınız ve BUILD
dosyalarınız büyüdükçe muhtemelen bazı tekrarlar olduğunu fark edeceksiniz. Ö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 dosyasındaki kod tekrarı genellikle sorun teşkil etmez. Bu, dosyayı daha okunabilir hale getirebilir: Her beyan, bağlam olmadan okunabilir ve anlaşılabilir. Bu, yalnızca insanlar için değil, harici araçlar için de önemlidir. Örneğin, bir araç, eksik bağımlılıkları eklemek için BUILD dosyalarını okuyup güncelleyebilir.
Kod yeniden düzenleme ve kodun yeniden kullanılması, bu tür otomatik değişiklikleri engelleyebilir.
Değerleri paylaşmak yararlıysa (örneğin, değerlerin senkronize edilmesi 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 bildirimde artık COPTS değeri kullanılıyor. Genel kural olarak, genel sabitleri adlandırmak için büyük harfler kullanın.
Değişkenleri birden fazla BUILD dosyasında paylaşma
Bir değeri birden fazla BUILD dosyada paylaşmanız gerekiyorsa bu değeri bir .bzl dosyasına yerleştirmeniz gerekir. .bzl dosyaları, BUILD dosyalarında kullanılabilen tanımlar (değişkenler ve işlevler) içerir.
path/to/variables.bzl bölümüne ş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"],
)