Chia sẻ biến

Báo cáo vấn đề Xem nguồn Hằng đêm · 7.3 · 7.2 · 7.1 · 7 · 6,5

Tệp BUILD có thiết kế đơn giản và mang tính khai báo. Thông thường, bao gồm một loạt nội dung khai báo mục tiêu. Là cơ sở mã và BUILD của bạn tệp lớn hơn, nên bạn có thể sẽ thấy một số tệp 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ì việc trùng lặp mã trong tệp BUILD là hoàn toàn bình thường. Thao tác này có thể làm cho tệp nhiều hơn dễ đọc: mỗi nội dung khai báo đều có thể đọc được mà không cần ngữ cảnh. Chiến dịch này là rất quan trọng không chỉ đố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ó thể đọc và cập nhật tệp BUILD để thêm các phần phụ thuộc bị 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 nội dung sửa đổi.

Nếu việc chia sẻ giá trị hữu ích (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. Sử dụng chữ viết hoa theo quy ước để đặt tên cho hằng số toàn cục.

Chia sẻ các 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ị đó trong tệp .bzl. Tệp .bzl chứa định nghĩa (biến và hàm) có thể dùng trong BUILD tệp.

Trong path/to/variables.bzl, hãy ghi:

COPTS = ["-DVERSION=5"]

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

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