Chia sẻ biến

Báo cáo sự cố Xem nguồn

Tệp BUILD nhằm mục đích đơn giản và mang tính khai báo. Các mục 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ố bản sao, 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. Điều này giúp tệp dễ đọc hơn: mọi nội dung khai báo đều có thể được đọc và hiểu mà không cần bất kỳ ngữ cảnh nào. Đ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 các 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 sửa đổi tự động này.

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ể giới thiệu 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 sử dụng chữ cái viết hoa để đặ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 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 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"],
)