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