BazelCon 2022 akan hadir pada 16-17 November ke New York dan online.
Daftar sekarang.

Variabel Berbagi

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

File BUILD dimaksudkan agar sederhana dan deklaratif. Fungsi ini biasanya terdiri dari serangkaian deklarasi target. Saat 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 tidak bermasalah. Hal ini dapat membuat file lebih mudah dibaca: setiap deklarasi dapat dibaca dan dipahami tanpa konteks apa pun. Hal ini penting, tidak hanya untuk manusia, tetapi juga untuk alat eksternal. Misalnya, alat mungkin dapat membaca dan memperbarui file BUILD untuk menambahkan dependensi yang tidak ada. Pemfaktoran ulang kode dan penggunaan ulang kode mungkin mencegah modifikasi otomatis ini.

Jika berguna untuk berbagi nilai (misalnya, jika nilai harus tetap 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 menamai konstanta global.

Membagikan variabel di beberapa file BUILD

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

Dalam path/to/variables.bzl, tulis:

COPTS = ["-DVERSION=5"]

Kemudian, Anda dapat mengupdate 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"],
)