native.cc_library. Xin lưu ý rằng mô-đun gốc chỉ có trong giai đoạn tải (tức là đối với macro, không phải đối với việc triển khai quy tắc). Các thuộc tính sẽ bỏ qua None giá trị và coi như thuộc tính đó chưa được đặt.Các hàm sau cũng có sẵn:
Thành phần
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- subpackages
existing_rule
unknown native.existing_rule(name)
None nếu không có thực thể quy tắc nào có tên đó.Ở đây, đối tượng bất biến giống từ điển có nghĩa là một đối tượng bất biến sâu x hỗ trợ hoạt động lặp lại giống từ điển, len(x), name in x, x[name], x.get(name), x.items(), x.keys() và x.values().
Kết quả chứa một mục cho từng thuộc tính, ngoại trừ các thuộc tính riêng tư (tên không bắt đầu bằng một chữ cái) và một số loại thuộc tính cũ không thể biểu thị. Ngoài ra, từ điển này còn chứa các mục nhập cho name và kind của thực thể quy tắc (ví dụ: 'cc_binary').
Các giá trị của kết quả biểu thị giá trị thuộc tính như sau:
- Các thuộc tính thuộc loại str, int và bool được biểu thị nguyên trạng.
- Nhãn được chuyển đổi thành chuỗi có dạng
':foo'cho các mục tiêu trong cùng một gói hoặc'//pkg:name'cho các mục tiêu trong một gói khác. - Danh sách được biểu thị dưới dạng bộ và từ điển được chuyển đổi thành từ điển mới, có thể thay đổi. Các phần tử của chúng được chuyển đổi đệ quy theo cùng một cách.
- Các giá trị
selectđược trả về với nội dung được chuyển đổi như mô tả ở trên. - Các thuộc tính mà không có giá trị nào được chỉ định trong quá trình tạo thực thể quy tắc và có giá trị mặc định được tính toán sẽ bị loại trừ khỏi kết quả. (Không thể tính toán giá trị mặc định được tính toán cho đến giai đoạn phân tích).
Nếu có thể, hãy tránh sử dụng hàm này. Hàm này khiến các tệp BUILD trở nên dễ bị lỗi và phụ thuộc vào thứ tự. Ngoài ra, hãy lưu ý rằng hàm này khác biệt một chút so với 2 quy tắc chuyển đổi khác về giá trị thuộc tính quy tắc từ biểu mẫu nội bộ sang Starlark: một quy tắc được dùng theo mặc định được tính toán, quy tắc còn lại được dùng theo ctx.attr.foo.
Tham số
| Tham số | Mô tả |
|---|---|
name
|
chuỗi;
bắt buộc Tên của mục tiêu. |
existing_rules
unknown native.existing_rules()
existing_rule(name) sẽ trả về.Ở đây, một đối tượng bất biến giống từ điển có nghĩa là một đối tượng bất biến sâu x hỗ trợ hoạt động lặp lại giống từ điển, len(x), name in x, x[name], x.get(name), x.items(), x.keys(), và x.values().
Lưu ý: Nếu có thể, hãy tránh sử dụng hàm này. Hàm này khiến các tệp BUILD trở nên dễ bị lỗi và phụ thuộc vào thứ tự.
exports_files
None native.exports_files(srcs, visibility=None, licenses=None)Tham số
| Tham số | Mô tả |
|---|---|
srcs
|
thứ tự của các chuỗi;
bắt buộc Danh sách các tệp cần xuất. |
visibility
|
thứ tự; hoặc None; mặc định là NoneBạn có thể chỉ định một khai báo về khả năng hiển thị. Các tệp sẽ hiển thị cho những mục tiêu được chỉ định. Nếu bạn không chỉ định chế độ hiển thị, thì mọi gói đều có thể nhìn thấy các tệp. |
licenses
|
thứ tự của chuỗi; hoặc None; mặc định là None. Giấy phép cần được chỉ định. |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- Khớp với ít nhất một mẫu trong
include. - Không khớp với mẫu nào trong
exclude(mặc định là[]).
exclude_directories được bật (đặt thành 1), thì các tệp thuộc loại thư mục sẽ bị bỏ qua trong kết quả (mặc định là 1).
Tham số
| Tham số | Mô tả |
|---|---|
include
|
thứ tự của các chuỗi;
mặc định là []Danh sách các mẫu glob cần đưa vào. |
exclude
|
thứ tự của các chuỗi;
mặc định là []Danh sách các mẫu glob cần loại trừ. |
exclude_directories
|
số nguyên;
mặc định là 1Cờ cho biết có loại trừ thư mục hay không. |
allow_empty
|
mặc định là unboundLiệu chúng ta có cho phép các mẫu glob không khớp với nội dung nào hay không. Nếu "allow_empty" là False, thì mỗi mẫu "include" riêng lẻ phải khớp với một nội dung nào đó và kết quả cuối cùng cũng phải có nội dung (sau khi các kết quả khớp của mẫu "exclude" bị loại trừ). |
module_name
string native.module_name()
module.name trong module_ctx.modules.
Có thể trả về None.
module_version
string native.module_version()
module.version trong module_ctx.modules.
Có thể trả về None.
package_group
None native.package_group(name, packages=[], includes=[])visibility.
Tham số
| Tham số | Mô tả |
|---|---|
name
|
chuỗi;
bắt buộc Tên riêng biệt cho quy tắc này. |
packages
|
thứ tự của các chuỗi;
mặc định là []Một danh sách đầy đủ các gói trong nhóm này. |
includes
|
thứ tự của các chuỗi;
mặc định là []Các nhóm gói khác có trong nhóm này. |
package_name
string native.package_name()
some/package/BUILD, giá trị của tệp này sẽ là some/package. Nếu tệp BUILD gọi một hàm được xác định trong tệp .bzl, thì package_name() sẽ khớp với gói tệp BUILD của trình gọi.
package_relative_label
Label native.package_relative_label(input)
BUILD mà macro hiện tại đang thực thi). Nếu đầu vào đã là một Label, thì đầu vào đó sẽ được trả về mà không thay đổi.Bạn chỉ có thể gọi hàm này trong khi đánh giá tệp BUILD và các macro mà hàm này gọi trực tiếp hoặc gián tiếp; bạn không thể gọi hàm này trong (ví dụ) hàm triển khai quy tắc.
Kết quả của hàm này giống với giá trị Label được tạo bằng cách truyền chuỗi đã cho vào thuộc tính có giá trị nhãn của một mục tiêu được khai báo trong tệp BUILD.
Lưu ý về cách sử dụng: Điểm khác biệt giữa hàm này và Label() là Label() sử dụng bối cảnh của gói tệp .bzl đã gọi hàm này, chứ không phải gói của tệp BUILD. Hãy sử dụng Label() khi bạn cần tham chiếu đến một mục tiêu cố định được mã hoá cứng vào macro, chẳng hạn như trình biên dịch. Hãy sử dụng package_relative_label() khi bạn cần chuẩn hoá chuỗi nhãn do tệp BUILD cung cấp thành đối tượng Label. (Không có cách nào để chuyển đổi chuỗi thành Label trong bối cảnh của một gói khác ngoài tệp BUILD hoặc tệp .bzl gọi. Vì lý do đó, các macro bên ngoài luôn nên ưu tiên truyền đối tượng Nhãn vào các macro bên trong thay vì chuỗi nhãn.)
Tham số
| Tham số | Mô tả |
|---|---|
input
|
chuỗi; hoặc Nhãn;
bắt buộc Chuỗi nhãn đầu vào hoặc đối tượng Nhãn. Nếu một đối tượng Nhãn được truyền, thì đối tượng đó sẽ được trả về nguyên trạng. |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis Không dùng nữa. Hãy ưu tiên sử dụng
repo_name thay vì API này. API này không chứa dấu @ ở đầu không cần thiết, nhưng hoạt động giống hệt nhau.Tên chính tắc của kho lưu trữ chứa gói hiện đang được đánh giá, có một dấu @ (@) ở đầu. Ví dụ: trong các gói được gọi bằng đoạn WORKSPACE local_repository(name='local', path=...), trường này sẽ được đặt thành @local. Trong các gói trong kho lưu trữ chính, trường này sẽ được đặt thành @.
subpackages
sequence native.subpackages(include, exclude=[], allow_empty=False)
Tham số
| Tham số | Mô tả |
|---|---|
include
|
thứ tự của các chuỗi;
bắt buộc Danh sách các mẫu glob cần đưa vào quá trình quét gói con. |
exclude
|
thứ tự của các chuỗi;
mặc định là []Danh sách các mẫu glob cần loại trừ khỏi quá trình quét gói con. |
allow_empty
|
bool;
mặc định là FalseLiệu chúng ta có gặp lỗi nếu lệnh gọi trả về danh sách trống hay không. Theo mặc định, danh sách trống cho biết lỗi tiềm ẩn trong tệp BUILD, trong đó lệnh gọi đến subpackages() là không cần thiết. Việc đặt thành true cho phép hàm này thành công trong trường hợp đó. |