Membagikan Variabel

File BUILD dimaksudkan agar sederhana dan deklaratif. Pengujian ini biasanya terdiri dari serangkaian deklarasi target. Seiring dengan bertambahnya ukuran file code base dan BUILD, Anda mungkin akan melihat beberapa duplikasi, seperti:

cc_library(
  name = "foo",
  copts = ["-DVERSION=5"],
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = ["-DVERSION=5"],
  srcs = ["bar.cc"],
  deps = [":foo"],
)

Duplikasi kode dalam file BUILD biasanya tidak masalah. Hal ini dapat membuat file lebih mudah dibaca: setiap deklarasi dapat dibaca dan dipahami tanpa konteks apa pun. Hal ini penting, tidak hanya bagi manusia, tetapi juga untuk alat eksternal. Misalnya, alat mungkin dapat membaca dan mengupdate file BUILD untuk menambahkan dependensi yang tidak ada. Pemfaktoran ulang kode dan penggunaan ulang kode dapat mencegah modifikasi otomatis seperti ini.

Jika berbagi nilai bermanfaat (misalnya, jika nilai harus tetap sinkron), Anda dapat memperkenalkan variabel:

COPTS = ["-DVERSION=5"]

cc_library(
  name = "foo",
  copts = COPTS,
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = COPTS,
  srcs = ["bar.cc"],
  deps = [":foo"],
)

Beberapa deklarasi kini menggunakan nilai COPTS. Berdasarkan konvensi, gunakan huruf besar untuk memberi nama konstanta global.

Membagikan variabel di beberapa file BUILD

Jika Anda perlu membagikan nilai di beberapa file BUILD, Anda harus memasukkannya dalam file .bzl. File .bzl berisi definisi (variabel dan fungsi) yang dapat digunakan dalam file BUILD.

Di path/to/variables.bzl, tulis:

COPTS = ["-DVERSION=5"]

Kemudian, Anda dapat memperbarui file BUILD untuk mengakses variabel:

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