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

問題を報告 ソースを表示

ルール

proto_lang_toolchain

ルールのソースを表示
proto_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)

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

LANG_proto_library ルール(java_proto_library など)が proto コンパイラを呼び出す必要があります。一部の 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

名前(必須)

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

blacklisted_protos

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

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

文字列、必須

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

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

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

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

command_line$(OUT) を、単一ファイルのパスまたは出力ディレクトリ(複数のファイルの場合)へのパスによってフォーマットする方法を制御します。指定可能な値は「単一」、「複数」です。
plugin

ラベル: デフォルトは None

指定した場合、proto コンパイラを呼び出すアクションで使用でき、proto コンパイラに渡されます。--plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

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

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

文字列。デフォルトは "Generating proto_library %{label}" です。

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

ラベル: デフォルトは None

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

ラベル: デフォルトは None

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

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, visibility)

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

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

コマンドラインでコンパイルすると、proto_libraryfoo-descriptor-set.proto.bin という名前のファイルを作成します。これは、ルール srcs のメッセージ用に設定された記述子です。このファイルはシリアル化された 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

名前(必須)

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

deps

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

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

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

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

ラベル: デフォルトは None

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

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

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

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

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

設定すると、このルールの srcs 属性の .proto ソースファイルは、この属性の値がリポジトリ相対パスの先頭に付加された時点でアクセス可能になります。

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

strip_import_prefix

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

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

設定すると、このルールの srcs 属性内の .proto ソースファイルは、この接頭辞がカットされてパスでアクセス可能になります。

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

import_prefix 属性の接頭辞は、この接頭辞が削除されてから追加されます。