Tệp BUILD
nhằm mục đích đơn giản và mang tính khai báo. Các tệp này thường bao gồm một loạt các 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ể 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ường, việc trùng lặp mã trong tệp BUILD
là không có vấn đề gì. 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 phải đồng bộ hoá các giá trị), 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"],
)
Giờ đây, nhiều nội dung khai báo sẽ 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ị đó vào một 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 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"],
)