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