規則
proto_library
查看規則來源proto_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, toolchains, visibility)
如果使用 Bazel,請從 https://github.com/bazelbuild/rules_proto.
使用 proto_library
定義通訊協定緩衝區的程式庫
支援的語言可能會列出一條proto_library
加入支援規則的 deps
子句中,例如
java_proto_library
。
透過指令列編譯時,proto_library
會建立檔案
名為 foo-descriptor-set.proto.bin
的描述元
規則 src 的訊息。檔案為序列化
FileDescriptorSet
,相關說明
https://developers.google.com/protocol-buffers/docs/techniques#self-description.
這個檔案只包含 .proto
檔案直接的相關資訊
proto_library
規則所述;收集遞移性
您可以透過
[ProtoInfo].transitive_descriptor_sets
Starlark 供應商。
請參閱 proto_info.bzl
中的說明文件。
建議的程式碼整理方式:
- 每個
.proto
檔案一項proto_library
規則。 - 名為「
foo.proto
」的檔案會在名為「foo_proto
」的規則中, 和位於相同套件中的 Pod - 納入
proto_library
的[language]_proto_library
名為foo_proto
的命名應稱為foo_[language]_proto
。 和位於相同套件中
引數
屬性 | |
---|---|
name |
名稱;必選 此目標的專屬名稱。 |
deps
|
標籤清單;預設為 proto_library 規則清單。
proto_library 只能依附於其他 proto_library
目標。可能沒有依賴特定語言的程式庫。
|
srcs
|
標籤清單;預設為 .proto 和 .protodevel 檔案清單
就能建立目標這份清單通常並非空白清單。單一用途
其中 srcs 可以是 alias-library。這是
proto_library 規則在 deps 中有一或多個其他 proto_library。
這個模式可用於多種用途,例如以永久名稱的形式匯出公用 API
|
allow_exports
|
標籤;預設為 |
exports
|
標籤清單;預設為 |
import_prefix
|
String;預設值為 設定後,這項規則的 系統會先移除 |
strip_import_prefix
|
String;預設值為 設定後,這項規則的 如果這是相對路徑 (不是以斜線開頭),則採用套件相對路徑 第一項。如果是絕對路徑,會解讀為存放區相關路徑。 緊接在 |
proto_lang_toolchain
查看規則來源proto_lang_toolchain(name, allowlist_different_package, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, mnemonic, output_files, plugin, plugin_format_flag, progress_message, protoc_minimal_do_not_use, restricted_to, runtime, tags, target_compatible_with, testonly, toolchain_type, toolchains, visibility)
如果使用 Bazel,請從 https://github.com/bazelbuild/rules_proto.
指定 LANG_proto_library 規則的方式 (例如java_proto_library
) 應叫用
proto-compiler
部分 LANG_proto_library 規則允許透過指令列標記指定要使用的工具鍊。
請參閱說明文件
通常除非需要 微調 Java 編譯器
沒有編譯器。proto-compiler 來自於我們附加的 proto_library 規則,是
以指令列旗標的形式傳送至 Blaze。
部分功能需要在 proto_library 規則本身叫用 proto-compiler。
強制要求 LANG_proto_library 使用的編譯器與 LANG_proto_library 相同
proto_library
有。
範例
舉例如下:
proto_lang_toolchain(
name = "javalite_toolchain",
command_line = "--javalite_out=shared,immutable:$(OUT)",
plugin = ":javalite_plugin",
runtime = ":protobuf_lite",
)
引數
屬性 | |
---|---|
name |
名稱;必選 此目標的專屬名稱。 |
allowlist_different_package
|
標籤;預設為 |
blacklisted_protos
|
標籤清單;預設為 srcs 屬性中的檔案產生程式碼:
blacklisted_protos 。
這會用於已連結至 proto 執行階段的 .proto 檔案,例如
any.proto 。
|
command_line
|
String;必選 這個值會傳遞至 proto-compiler 來產生程式碼。只包含部分 專屬於此程式碼產生器/外掛程式 (例如不要加入 -I 參數)
|
mnemonic
|
String;預設值為 |
output_files
|
String;預設值為 command_line 中 $(OUT) 的格式。
單一檔案或輸出目錄的路徑 (在有多個檔案的情況下)。
可能的值包括:「single」、「multiple」。
|
plugin
|
標籤;預設為 --plugin=protoc-gen-PLUGIN=<executable>.
|
plugin_format_flag
|
String;預設值為 --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
String;預設值為 |
protoc_minimal_do_not_use
|
標籤;預設為 |
runtime
|
標籤;預設為 |
toolchain_type
|
標籤;預設為 |