Değişkenleri Paylaşma

Sorun bildir Kaynağı görüntüle Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

BUILD dosyaları basit ve bildirimsel olacak şekilde tasarlanı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 bildirim, 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 bildirim artık COPTS değerini kullanıyor. Genel sabitleri adlandırmak için geleneksel olarak büyük harfler kullanılır.

Değişkenleri birden fazla BUILD dosyasında 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 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"],
)