Quy tắc
proto_lang_toolchain
proto_lang_toolchain(name, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, mnemonic, plugin, plugin_format_flag, progress_message, proto_compiler, restricted_to, runtime, tags, target_compatible_with, testonly, visibility)
Không dùng nữa. Thay vào đó, vui lòng https://github.com/bazelbuild/rules_proto.
Chỉ định cách 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ừ khi bạn 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 ta đính kèm. Chuỗi này được truyền dưới dạng một cờ dòng lệnh cho Blaze.
Một số tính năng yêu cầu gọi trình biên dịch proto_library ngay trên chính quy tắc proto_library.
Vì vậy, việc 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 mà proto_library
thực hiện.
Ví dụ
Một ví dụ đơn giản là:
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 dành riêng cho mục tiêu này. |
blacklisted_protos
|
srcs của blacklisted_protos .
Mã này được 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
|
|
mnemonic
|
|
plugin
|
--plugin=protoc-gen-PLUGIN=
|
plugin_format_flag
|
--plugin=protoc-gen-PLUGIN=
|
progress_message
|
|
proto_compiler
|
|
runtime
|
|
proto_library
proto_library(name, deps, srcs, data, 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.
Sử dụng proto_library
để xác định các thư viện vùng đệm giao thức có thể sử dụng được trong 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 điệp mà quy tắc srcs. 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 quy tắc proto_library
đề cập trực tiếp; tập hợp các bộ 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 bằng ProtoInfo.java
.
Cách sắp xếp mã đề xuất:
- Một quy tắc
proto_library
cho mỗi.proto
tệp. - Tệp có tên
foo.proto
sẽ nằm trong quy tắc có tênfoo_proto
, nằm trong cùng một gói. -
[language]_proto_library
góiproto_library
có tênfoo_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 dành riêng cho mục tiêu này. |
deps
|
proto_library khác mà mục tiêu phụ thuộc vào.
proto_library chỉ có thể phụ thuộc vào các mục tiêu proto_library khác.
Quá trình này có thể không phụ thuộc vào thư viện dành riêng cho từng ngôn ngữ.
|
srcs
|
.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 mà srcs có thể trống là một alias-library (thư viện bí danh). Đây là một quy tắc proto_library có một hoặc nhiều proto_library khác trong deps .
Mẫu này có thể được dùng để, chẳng hạn như xuất một API công khai dưới một tên cố định.
|
exports
|
|
import_prefix
|
Khi đặt, bạn có thể truy cập vào tệp nguồn .proto trong thuộc tính Tiền tố trong thuộc tính |
strip_import_prefix
|
Khi đặt, các tệp nguồn .proto trong thuộc tính Nếu đó là một đường dẫn tương đối (không bắt đầu bằng dấu gạch chéo), thì đường dẫn đó được xem là đường dẫn tương đối với gói. Nếu đó là giá trị tuyệt đối, thì URL đó được hiểu là đường dẫn tương đối với kho lưu trữ. Tiền tố trong thuộc tính |