BUILD tệp được thiết kế để trở nên đơn giản và khai báo. Các tệp này thường
bao gồm một loạt các khai báo mục tiêu. Khi cơ sở mã và các tệp BUILD
của bạn trở nê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"],
)
Nội dung trùng lặp trong mã của các tệp BUILD thường không có vấn đề gì. Điều này có thể giúp tệp dễ đọc hơn: bạn có thể đọc và hiểu từng khai báo 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 đối với các công cụ bên ngoài. Ví dụ: a
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 kiểu sửa đổi tự động này.
Nếu việc chia sẻ các giá trị là 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 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ố chung.
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. Các 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"],
)