Chia sẻ biến

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

BUILD là tệp đơn giản và mang tính khai báo. Các lỗi 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à các tệp BUILD của bạn lớn hơn, bạn có thể 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ì tình trạng trùng lặp mã trong tệp BUILD. Nhờ vậy, tệp này sẽ dễ đọc hơn: mỗi phần khai báo có thể đọc và hiểu được mà không cần ngữ cảnh. Điều này rất quan trọng, không chỉ đối với con người mà còn 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 loại sửa đổi tự động này.

Nếu việc chia sẻ các giá trị rất hữu ích (ví dụ: nếu các giá trị phải được đồng bộ hoá), thì bạn có thể tạo 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 thông tin 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 các 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ị đó vào tệp .bzl. Tệp .bzl chứa các định nghĩa (biến và hàm) có thể được dùng trong các 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:

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