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

問題を報告 ソースを表示

ルール

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)

Bazel を使用している場合は、https://github.com/bazelbuild/rules_proto からルールを読み込みます。

LANG_proto_library ルールの方法(例:java_proto_library)が proto-compiler を呼び出す必要があります。一部の LANG_proto_library ルールでは、コマンドライン フラグを使用して使用するツールチェーンを指定できます。ドキュメントをご覧ください。

通常は、Java コンパイラを調整する場合を除き、この種のルールを作成しないでください。

コンパイラはありません。proto コンパイラは、接続先の proto_library ルールから取得されます。コマンドライン フラグとして 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

Name; required

このターゲットの一意の名前。

blacklisted_protos

List of labels; optional

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

String; required

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

String; optional; default is "GenProto"

この値は、protoc アクションのニーモニックとして設定されます。
plugin

Label; optional

指定すると、proto-compiler を呼び出すアクションで使用可能になり、proto-compiler に渡されます。 --plugin=protoc-gen-PLUGIN=.
plugin_format_flag

String; optional

指定した場合、この値はプラグインを使用するために proto-compiler に渡されます。値には単一の %s を含める必要があり、プラグインの実行可能ファイルに置き換えられます。 --plugin=protoc-gen-PLUGIN=.
progress_message

String; optional; default is "Generating proto_library %{label}"

この値は、protoc アクションの進行状況メッセージとして設定されます。
proto_compiler

Label; optional

proto コンパイラの実行可能ファイル。 指定すると、このターゲットがコードを生成する proto コンパイラとして使用されます。
runtime

Label; optional

生成されたコードがコンパイルされる言語固有のライブラリ。 具体的な動作は LANG_proto_library 固有です。 たとえば、Java はランタイムに対してコンパイルする必要があります。

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)

非推奨です。代わりに https://github.com/bazelbuild/rules_proto を使用してください。

proto_library を使用して、複数の言語から使用できるプロトコル バッファのライブラリを定義します。proto_library は、java_proto_library などのサポートされているルールの deps 句に含めることができます。

コマンドラインでコンパイルすると、proto_library によって foo-descriptor-set.proto.bin という名前のファイルが作成されます。これは、ルールがスタックするメッセージの記述子セットです。このファイルはシリアル化された FileDescriptorSet です。詳しくは、https://developers.google.com/protocol-buffers/docs/techniques#self-description をご覧ください。

これは、proto_library ルールによって直接言及される .proto ファイルに関する情報のみを含みます。推移的記述子セットのコレクションは [ProtoInfo].transitive_descriptor_sets Starlark プロバイダを介して入手できます。ProtoInfo.java のドキュメントをご覧ください。

推奨されるコード構成:

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

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

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

List of labels; optional

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

List of labels; optional

proto ソースの「import public」で参照できる proto_library ターゲットのリスト。
import_prefix

String; optional

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

この属性を設定すると、このルールの srcs 属性内の .proto ソースファイルが、この属性のリポジトリ パスの前に付加された属性の値になります。

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

strip_import_prefix

String; optional

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

設定すると、このルールの srcs 属性内の .proto ソースファイルは、この接頭辞がカットされたパスからアクセスできます。

相対パスで(スラッシュで始まらない場合)パッケージ相対パスと見なされます。絶対パスである場合、リポジトリの相対パスとして認識されます。

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