Variabel Berbagi

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.
Laporkan masalah Lihat sumber

File BUILD dimaksudkan agar sederhana dan deklaratif. Variabel ini biasanya terdiri dari serangkaian deklarasi target. Seiring code base dan file BUILD Anda semakin besar, 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 dapat dilakukan. 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 alat-alat eksternal. Misalnya, alat mungkin dapat membaca dan memperbarui file BUILD untuk menambahkan dependensi yang tidak ada. Pemfaktoran ulang kode dan penggunaan ulang kode dapat mencegah jenis modifikasi otomatis ini.

Jika berbagi nilai berguna (misalnya, jika nilai harus selalu disinkronkan), 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 sekarang menggunakan nilai COPTS. Berdasarkan konvensi, gunakan huruf besar untuk memberi nama konstanta global.

Berbagi variabel di beberapa file BUILD

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

Dalam path/to/variables.bzl, tulis:

COPTS = ["-DVERSION=5"]

Selanjutnya, Anda dapat memperbarui file BUILD untuk mengakses variabel ini:

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