Quy tắc
proto_lang_toolchain
Xem nguồn quy tắcproto_lang_toolchain(name, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, mnemonic, output_files, plugin, plugin_format_flag, progress_message, proto_compiler, restricted_to, runtime, tags, target_compatible_with, testonly, visibility)
Nếu sử dụng Bazel, vui lòng tải quy tắc từ https://github.com/bazelbuild/rules_proto.
Chỉ định cách một quy tắc LANG_proto_library (ví dụ: java_proto_library
) sẽ gọi trình biên dịch proto.
Một số quy tắc lang_proto_library cho phép chỉ định chuỗi công cụ nào cần sử dụng bằng cờ hiệu dòng lệnh; hãy tham khảo tài liệu của các quy tắc đó.
Thông thường, bạn không nên viết các loại quy tắc đó trừ phi muốn điều chỉnh trình biên dịch Java.
Không có trình biên dịch. Trình biên dịch proto được lấy từ quy tắc proto_library mà chúng tôi đính kèm. Nó được truyền dưới dạng cờ dòng lệnh đến Blaze.
Một số tính năng yêu cầu phải gọi trình biên dịch proto trên chính quy tắc proto_library.
Bạn nên thực thi trình biên dịch mà lang_proto_library sử dụng giống như trình biên dịch proto_library
.
Ví dụ
Ví dụ đơn giản:
proto_lang_toolchain( name = "javalite_toolchain", command_line = "--javalite_out=shared,immutable:$(OUT)", plugin = ":javalite_plugin", runtime = ":protobuf_lite", )
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
blacklisted_protos
|
Danh sách nhãn; mặc định là srcs của blacklisted_protos .
Thuộc tính này dùng cho các tệp .proto đã được liên kết với môi trường thời gian chạy proto, chẳng hạn như any.proto .
|
command_line
|
Chuỗi; bắt buộc Giá trị này sẽ được chuyển đến trình biên dịch proto để tạo mã. Chỉ bao gồm các phần dành riêng cho trình tạo mã/trình bổ trợ mã này (ví dụ: không bao gồm tham số -I)
|
mnemonic
|
Chuỗi; mặc định là |
output_files
|
Chuỗi; giá trị mặc định là $(OUT) trong command_line , bằng đường dẫn đến một tệp hoặc thư mục đầu ra trong trường hợp có nhiều tệp.
Các giá trị có thể là: "single", "multiple".
|
plugin
|
Nhãn; mặc định là --plugin=protoc-gen-PLUGIN=<executable>.
|
plugin_format_flag
|
Chuỗi; mặc định là --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
Chuỗi; mặc định là |
proto_compiler
|
Nhãn; mặc định là |
runtime
|
Nhãn; mặc định là |
proto_library
Xem nguồn quy tắcproto_library(name, deps, srcs, data, allow_exports, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, import_prefix, licenses, restricted_to, strip_import_prefix, tags, target_compatible_with, testonly, visibility)
Không dùng nữa. Thay vào đó, vui lòng sử dụng https://github.com/bazelbuild/rules_proto.
Dùng proto_library
để xác định các thư viện vùng đệm giao thức có thể dùng bằng nhiều ngôn ngữ. proto_library
có thể được liệt kê trong mệnh đề deps
của các quy tắc được hỗ trợ, chẳng hạn như java_proto_library
.
Khi được biên dịch trên dòng lệnh, proto_library
sẽ tạo một tệp có tên foo-descriptor-set.proto.bin
. Tệp này là phần mô tả được đặt cho các thông báo mà quy tắc src. Tệp này là một FileDescriptorSet
đã chuyển đổi tuần tự, được mô tả trong https://developers.google.com/protocol-buffers/docs/techniques#self-description.
Tệp này chỉ chứa thông tin về các tệp .proto
được đề cập trực tiếp bằng quy tắc proto_library
; bộ sưu tập các tập hợp chỉ số mô tả bắc cầu có sẵn thông qua nhà cung cấp Starlark [ProtoInfo].transitive_descriptor_sets
.
Xem tài liệu trong ProtoInfo.java
.
Cách sắp xếp mã đề xuất:
- Một quy tắc
proto_library
cho mỗi tệp.proto
. - Tệp có tên
foo.proto
sẽ nằm trong quy tắc có tênfoo_proto
, nằm trong cùng gói. - Một
[language]_proto_library
góiproto_library
có tên làfoo_proto
sẽ được gọi làfoo_[language]_proto
và nằm trong cùng một gói.
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; mặc định là proto_library khác mà mục tiêu phụ thuộc.
proto_library chỉ có thể phụ thuộc vào các mục tiêu proto_library khác.
Tính năng này có thể không phụ thuộc vào các thư viện dành riêng cho ngôn ngữ.
|
srcs
|
Danh sách nhãn; mặc định là .proto và .protodevel được xử lý để tạo mục tiêu. Đây thường là danh sách không trống. Một trường hợp sử dụng có thể để trống srcs là ALIAS-library. Đây là quy tắc proto_library có một hoặc nhiều proto_library khác trong deps .
Bạn có thể dùng mẫu này để xuất một API công khai dưới một tên cố định.
|
allow_exports
|
Nhãn; mặc định là |
exports
|
Danh sách nhãn; mặc định là |
import_prefix
|
Chuỗi; giá trị mặc định là Khi được đặt, các tệp nguồn .proto trong thuộc tính Tiền tố trong thuộc tính |
strip_import_prefix
|
Chuỗi; giá trị mặc định là Khi được đặt, các tệp nguồn .proto trong thuộc tính Nếu đó là đường dẫn tương đối (không bắt đầu bằng dấu gạch chéo), thì đường dẫn đó sẽ được coi là đường dẫn tương đối với gói. Nếu giá trị là một giá trị tuyệt đối, thì giá trị này được hiểu là một đường dẫn tương đối của kho lưu trữ. Tiền tố trong thuộc tính |