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. Vui lòng Thay vào đó, hãy truy cập vào https://github.com/bazelbuild/rules_proto.
Chỉ định cách quy tắc language_proto_library (ví dụ: java_proto_library
) sẽ gọi ra
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ách sử dụng cờ dòng lệnh;
tham khảo tài liệu của họ.
Thông thường, bạn không nên viết các loại quy tắc đó trừ phi bạn muốn tinh chỉnh trình biên dịch Java của bạn.
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. Đó là
được chuyển dưới dạng cờ dòng lệnh cho Blaze.
Một số tính năng yêu cầu trình biên dịch proto phải được gọi trên chính quy tắc proto_library.
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 sẽ giúp ích cho bạn
proto_library
có.
Ví dụ
Một 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 duy nhất cho mục tiêu này. |
blacklisted_protos
|
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
|
|
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. Vui lòng sử dụng Thay vào đó, hãy truy cập vào https://github.com/bazelbuild/rules_proto.
Dùng proto_library
để xác định thư viện vùng đệm giao thức
có thể được sử dụng từ nhiều ngôn ngữ. Một 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
, là mã mô tả được thiết lập cho
gửi thông báo 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 đề cập trực tiếp bởi
Quy tắc proto_library
; 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 trong ProtoInfo.java
.
Cách sắp xếp mã nên dùng:
- 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 một gói. -
[language]_proto_library
góiproto_library
có tênfoo_proto
phải được gọifoo_[language]_proto
và nằm trong cùng một gói.
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
proto_library khác mà mục tiêu phụ thuộc.
proto_library chỉ có thể phụ thuộc vào
proto_library mục tiêu.
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
|
.proto và .protodevel
được xử lý để tạo mục tiêu. Đây thường là một danh sách không trống. Một trường hợp sử dụng
trong đó srcs có thể trống là một alias-library. Đây là một
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 API công khai dưới một tên cố định.
|
exports
|
|
import_prefix
|
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
|
Khi được đặ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), đường dẫn đó được coi là một đường dẫn tương đối một. 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 |