プロトコル バッファ ルール

問題を報告 ソースを表示 ナイトリー · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ルール

cc_proto_library

ルールソースを表示
cc_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

cc_proto_library は、.proto ファイルから C++ コードを生成します。

depsproto_library ルールを参照する必要があります。

例:


cc_library(
    name = "lib",
    deps = [":foo_cc_proto"],
)

cc_proto_library(
    name = "foo_cc_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

引数

属性
name

名前: 必須

このターゲットの名前。

deps

ラベルのリスト。デフォルトは [] です。

C++ コードを生成する proto_library ルールのリスト。

java_lite_proto_library

ルールソースを表示
java_lite_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

java_lite_proto_library は、.proto ファイルから Java コードを生成します。

depsproto_library ルールを参照する必要があります。

例:


java_library(
    name = "lib",
    runtime_deps = [":foo"],
)

java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)

proto_library(
    name = "bar",
)

引数

属性
name

名前: 必須

このターゲットの名前。

deps

ラベルのリスト。デフォルトは [] です。

Java コードを生成する proto_library ルールのリスト。

java_proto_library

ルールソースを表示
java_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

java_proto_library は、.proto ファイルから Java コードを生成します。

depsproto_library ルールを参照する必要があります。

例:


java_library(
    name = "lib",
    runtime_deps = [":foo_java_proto"],
)

java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

引数

属性
name

名前: 必須

このターゲットの名前。

deps

ラベルのリスト。デフォルトは [] です。

Java コードを生成する proto_library ルールのリスト。

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_libraryfoo-descriptor-set.proto.bin という名前のファイルを作成します。これは、ルールの src のメッセージのディスクリプタ セットです。このファイルはシリアル化された FileDescriptorSet です。詳細については、 https://developers.google.com/protocol-buffers/docs/techniques#self-description をご覧ください。

proto_library ルールで直接参照される .proto ファイルに関する情報のみが含まれます。伝播記述子セットのコレクションは、[ProtoInfo].transitive_descriptor_sets Starlark プロバイダで利用できます。proto_info.bzl のドキュメントをご覧ください。

推奨されるコードの編成:

  • .proto ファイルごとに 1 つの proto_library ルール。
  • foo.proto という名前のファイルは、同じパッケージにある foo_proto という名前のルールに格納されます。
  • foo_proto という名前の proto_library をラップする [language]_proto_libraryfoo_[language]_proto という名前で、同じパッケージに配置する必要があります。

引数

属性
name

名前: 必須

このターゲットの名前。

deps

ラベルのリスト。デフォルトは [] です。

ターゲットが依存する他の proto_library ルールのリスト。proto_library は、他の proto_library ターゲットにのみ依存できます。言語固有のライブラリに依存しない場合があります。
srcs

ラベルのリスト。デフォルトは [] です。

ターゲットの作成時に処理される .proto ファイルと .protodevel ファイルのリスト。通常、このリストは空ではありません。srcs を空にできるユースケースの 1 つは、エイリアス ライブラリです。これは、deps に 1 つ以上の他の proto_library を持つ proto_library ルールです。このパターンは、たとえば、永続的な名前で公開 API をエクスポートする場合に使用できます。
allow_exports

ラベル(デフォルトは None

リストに表示されているパッケージのいずれにも含まれていない lang_proto_library で、proto ライブラリが再エクスポートされたり使用されたりすることを防ぐオプションの許可リスト。
exports

ラベルのリスト。デフォルトは [] です。

proto ソースの「import public」を介して参照できる proto_library ターゲットのリスト。「import public」を使用していても、exports 属性に対応するライブラリをリストに含めていない場合、エラーになります。すべての lang_proto_library 実装がまだ変更されていないため、ライブラリは deps と exports の両方でリストされています。
import_prefix

文字列。デフォルトは "" です。

このルールの .proto ファイルのパスに追加する接頭辞。

設定すると、このルールの srcs 属性の .proto ソースファイルに、リポジトリ相対パスの前にこの属性の値を追加したパスでアクセスできます。

この接頭辞が追加される前に、strip_import_prefix 属性の接頭辞が削除されます。

strip_import_prefix

文字列。デフォルトは "/" です。

このルールの .proto ファイルのパスから削除する接頭辞。

設定すると、このルールの srcs 属性の .proto ソースファイルに、この接頭辞が切り捨てられたパスでアクセスできます。

相対パス(スラッシュで始まらないパス)の場合は、パッケージ相対パスとして扱われます。絶対パスの場合は、リポジトリ相対パスとして解釈されます。

import_prefix 属性の接頭辞は、この接頭辞が削除された後に追加されます。

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 ライブラリを生成します。 通常、`proto_library` ルール `foo_proto` をラップする場合は、`py_proto_library` ルールの名前を `foo_py_pb2` にします。`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 = "foo_proto", srcs = ["foo.proto"], ) ```

引数

属性
name

名前: 必須

このターゲットの名前。

deps

ラベルのリスト。デフォルトは [] です。

Python ライブラリを生成する「proto_library」ルールのリスト。通常、これは 1 つのターゲット(対象のプロトライブラリ)のみです。これは、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)はプロトコンパイラを呼び出す必要があります。一部の LANG_proto_library ルールでは、コマンドライン フラグを使用して使用するツールチェーンを指定できます。ドキュメントをご覧ください。

通常、Java コンパイラをチューニングする場合を除き、このようなルールは記述しないでください。

コンパイラはありません。proto コンパイラは、アタッチする proto_library ルールから取得されます。これは、コマンドライン フラグとして Blaze に渡されます。一部の機能では、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

ラベル(デフォルトは None

blacklisted_protos

ラベルのリスト。デフォルトは [] です。

blacklisted_protossrcs 属性のファイルにはコードは生成されません。これは、any.proto など、proto ランタイムにすでにリンクされている .proto ファイルに使用されます。
command_line

文字列(必須)

この値はプロトコル コンパイラに渡され、コードが生成されます。このコード生成ツール/プラグインに固有の部分のみを含めます(例: -I パラメータは含めない)。
  • $(OUT) は LANG_proto_library 固有です。ルールでは、この変数の解釈方法を定義する必要があります。たとえば、Java の場合、$(OUT) は作成する src-jar ファイル名に置き換えられます。
mnemonic

文字列。デフォルトは "GenProto" です。

この値は、protoc アクションの頭字語として設定されます。
output_files

文字列。デフォルトは "legacy" です。

command_line$(OUT) の形式を制御します。単一のファイルの場合はパス、複数のファイルの場合は出力ディレクトリです。有効な値は「single」、「multiple」です。
plugin

ラベル(デフォルトは None

指定されている場合、プロトコル コンパイラを呼び出すアクションで使用可能になり、プロトコル コンパイラに渡されます。 --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

文字列。デフォルトは "" です。

指定すると、この値が proto-compiler に渡され、プラグインが使用されます。値には、プラグインの実行可能ファイルに置き換えられる 1 つの %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