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 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ụ cần sử dụng bằng cách dù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 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. Trình biên dịch này được truyền dưới dạng cờ hiệu 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.
Việc thực thi trình biên dịch mà LANG_proto_library sử dụng sẽ có lợi vì trình biên dịch này giống với trình biên dịch mà proto_library sử dụng.
Ví dụ
Một ví dụ đơn giản sẽ 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; bắt buộc Tên dành riêng cho mục tiêu này. |
blacklisted_protos
|
Danh sách nhãn; giá trị mặc định là srcs của
blacklisted_protos.
Thuộc tính này được dùng cho các tệp .proto đã được liên kết vào 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 truyền đến trình biên dịch proto để tạo mã. Chỉ đưa các phần dành riêng cho trình tạo mã/trình bổ sung này vào (ví dụ: không đưa các tham số -I vào)
|
mnemonic
|
Chuỗi; giá trị mặc định là |
output_files
|
Chuỗi; giá trị mặc định là $(OUT) trong command_line, theo
đườ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; giá trị mặc định là --plugin=protoc-gen-PLUGIN=<executable>.
|
plugin_format_flag
|
Chuỗi; giá trị mặc định là --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
Chuỗi; giá trị mặc định là |
proto_compiler
|
Nhãn; giá trị mặc định là |
runtime
|
Nhãn; giá trị 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. 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ể được sử dụng từ nhiều ngôn ngữ. A 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, một proto_library sẽ tạo một tệp có tên
foo-descriptor-set.proto.bin, đây là tập hợp mô tả cho các
thông báo của quy tắc srcs. Tệp này là một FileDescriptorSet được tuần tự hoá, đượ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 trực tiếp đề cập; tập hợp các tập hợp mô tả bắc cầu có sẵn thông qua nhà cung cấp [ProtoInfo].transitive_descriptor_sets Starlark.
Xem tài liệu trong ProtoInfo.java.
Đề xuất cách tổ chức mã:
- Một quy tắc
proto_librarycho mỗi tệp.proto. - Tệp có tên
foo.protosẽ nằm trong một quy tắc có tênfoo_proto, nằm trong cùng một gói. - Một
[language]_proto_librarygóiproto_librarycó tênfoo_protophải được gọi làfoo_[language]_protovà nằm trong cùng một gói.
Đối số
| Thuộc tính | |
|---|---|
name |
Tên; bắt buộc Tên dành riêng cho mục tiêu này. |
deps
|
Danh sách nhãn; giá trị mặc định là proto_library khác mà mục tiêu phụ thuộc vào.
Một proto_library chỉ có thể phụ thuộc vào các mục tiêu
proto_library khác.
Mục tiêu này không thể phụ thuộc vào các thư viện dành riêng cho ngôn ngữ.
|
srcs
|
Danh sách nhãn; giá trị 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
mà srcs có thể trống là một 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ể sử 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; giá trị mặc định là |
exports
|
Danh sách nhãn; giá trị 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 của gói. Nếu đó là đường dẫn tuyệt đối, thì đường dẫn đó sẽ được hiểu là đường dẫn tương đối của kho lưu trữ. Tiền tố trong thuộc tính |