通訊協定緩衝區規則

回報問題 查看原始碼 Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

規則

py_proto_library

查看規則來源
py_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
使用「py_proto_library」從「.proto」檔案產生 Python 程式庫。 慣例是將 `py_proto_library` 規則命名為 `foo_py_pb2`,當它包裝 `proto_library` 規則 `foo_proto` 時。 `deps` 必須指向 `proto_library` 規則。 例如: ```starlark py_library( name = "lib", deps = [":foo_py_pb2"], ) py_proto_library( name = "foo_py_pb2", deps = [":foo_proto"], ) proto_library( name = "` proto" src.proto "

引數

屬性
name

名稱;必填

這個目標的專屬名稱。

deps

標籤清單;預設為 []

要為其產生 Python 程式庫的 `proto_library` 規則清單。通常這只是一個目標:您感興趣的 proto 程式庫。可以是任何提供 `ProtoInfo` 的目標。

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 編譯器。部分 LANG_proto_library 規則允許透過指令列旗標指定要使用的工具鍊,詳情請參閱相關說明文件。

除非您想調整 Java 編譯器,否則通常不應編寫這類規則。

沒有編譯器。系統會從我們附加的 proto_library 規則取得 proto 編譯器。會以指令列標記的形式傳遞至 Blaze。部分功能需要在 proto_library 規則本身上叫用 proto 編譯器。強制執行 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

標籤;預設為 None

blacklisted_protos

標籤清單;預設為 []

系統不會為 blacklisted_protossrcs 屬性中所列的檔案產生程式碼。這項功能適用於已連結至 proto 執行階段的 .proto 檔案,例如 any.proto
command_line

字串;必填

這個值會傳遞至 Proto 編譯器,以產生程式碼。只包含此程式碼產生器/外掛程式專屬的部分 (例如,請勿加入 -I 參數)
  • $(OUT) 是 LANG_proto_library 專屬,規則應定義解讀這個變數的方式。舉例來說,如果是 Java,系統會將 $(OUT) 替換為要建立的 src-jar 檔案名稱。
mnemonic

字串;預設為 "GenProto"

這個值會設為 protoc 動作的助憶法。
output_files

字串;預設為 "legacy"

控管 command_line 中的 $(OUT) 格式設定方式,可透過單一檔案的路徑或輸出目錄 (如果有多個檔案) 來設定。可能的值為「single」(單一) 和「multiple」(多個)。
plugin

標籤;預設為 None

如果提供,則會提供給呼叫 Proto 編譯器的動作,並傳遞至 Proto 編譯器: --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

字串;預設為 ""

如果提供這個值,系統會將其傳遞至 proto 編譯器,以便使用外掛程式。值必須包含單一 %s,並以外掛程式執行檔取代。--plugin=protoc-gen-PLUGIN=<executable>.
progress_message

字串;預設為 "Generating proto_library %{label}"

這個值會設為 protoc 動作的進度訊息。
protoc_minimal_do_not_use

標籤;預設為 None

runtime

標籤;預設為 None

產生程式碼會針對此語言專屬程式庫進行編譯。確切行為僅適用於 LANG_proto_library。舉例來說,Java 應針對執行階段進行編譯。
toolchain_type

標籤;預設值為 None

proto_toolchain

查看規則來源
proto_toolchain(name, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, mnemonic, output_files, progress_message, proto_compiler, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

引數

屬性
name

名稱;必填

這個目標的專屬名稱。

command_line

字串;預設值為 "--descriptor_set_out=%s"

mnemonic

字串;預設為 "GenProtoDescriptorSet"

output_files

字串;預設為 "single"

progress_message

字串;預設為 "Generating Descriptor Set proto_library %{label}"

proto_compiler

標籤;預設為 None