BUILD
dosyalarının basit ve açıklayıcı olması amaçlanmıştır. Genellikle
bir dizi hedef beyanından oluşur. Kod tabanınız ve BUILD
olarak
büyüdükçe aşağıdaki gibi bir yineleme 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, dosyayı 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,
araç, eksik bağımlılıkları eklemek için BUILD
dosyalarını okuyabilir ve güncelleyebilir.
Kod yeniden düzenleme ve kod yeniden kullanımı, bu tür otomatik değişiklikleri önleyebilir.
Değerleri paylaşmak yararlı oluyorsa (örneğin, değerlerin senkronize edilmesi gerekiyorsa) şuna 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. Genellikle, genel sabitleri adlandırmak için büyük harf kullanın.
Birden çok BUILD dosyasında değişken paylaşma
Birden fazla BUILD
dosyasında bir değer paylaşmanız gerekiyorsa onu yerleştirmeniz gerekir
.bzl
dosyasında. .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"],
)