Chia sẻ biến

Tệp BUILD nên đơn giản và mang tính khai báo. Các bản cập nhật này thường bao gồm một loạt nội dung khai báo mục tiêu. Khi cơ sở mã và tệp BUILD của bạn lớn hơn, bạn có thể sẽ nhận thấy một số nội dung trùng lặp, chẳng hạn như:

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

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

Thường thì bạn có thể gặp vấn đề trùng lặp mã trong các tệp BUILD. Điều này có thể giúp tệp dễ đọc hơn: có thể đọc và hiểu mỗi nội dung khai báo mà không cần ngữ cảnh. Điều này không chỉ quan trọng đối với con người mà còn đối với các công cụ bên ngoài. Ví dụ: một công cụ có thể đọc và cập nhật tệp BUILD để thêm các phần phụ thuộc còn thiếu. Việc tái cấu trúc mã và sử dụng lại mã có thể ngăn chặn loại hình sửa đổi tự động này.

Nếu hữu ích khi chia sẻ giá trị (ví dụ: nếu các giá trị phải được đồng bộ hoá), bạn có thể thêm một biến:

COPTS = ["-DVERSION=5"]

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

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

Nhiều nội dung khai báo hiện sử dụng giá trị COPTS. Theo quy ước, hãy dùng chữ cái viết hoa để đặt tên cho hằng số toàn cục.

Chia sẻ biến trên nhiều tệp BUILD

Nếu cần chia sẻ một giá trị trên nhiều tệp BUILD, bạn phải đặt giá trị đó vào một tệp .bzl. Tệp .bzl chứa các định nghĩa (biến và hàm) có thể dùng trong tệp BUILD.

Trong path/to/variables.bzl, hãy viết:

COPTS = ["-DVERSION=5"]

Sau đó, bạn có thể cập nhật các tệp BUILD để truy cập vào biến này:

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