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