ルール
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_protos の srcs 属性内のファイルに対してコードは生成されません。
proto ランタイムにすでにリンクされている .proto ファイル(any.proto など)に使用されます。 |
command_line
|
文字列、必須 この値は、コードを生成するために proto-compiler に渡されます。このコード生成ツールまたはプラグインに固有の部分のみを含めます(たとえば、-I パラメータは含めないでください)
|
mnemonic
|
文字列。デフォルトは |
output_files
|
文字列。デフォルトは command_line の $(OUT) を、単一ファイルのパスまたは出力ディレクトリ(複数のファイルの場合)へのパスによってフォーマットする方法を制御します。指定可能な値は「単一」、「複数」です。 |
plugin
|
ラベル: デフォルトは --plugin=protoc-gen-PLUGIN=<executable>. |
plugin_format_flag
|
文字列。デフォルトは --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
文字列。デフォルトは |
proto_compiler
|
ラベル: デフォルトは |
runtime
|
ラベル: デフォルトは |
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_library
は foo-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
|
ラベル: デフォルトは |
exports
|
ラベルのリスト。デフォルトは |
import_prefix
|
文字列。デフォルトは 設定すると、このルールの この接頭辞が追加される前に、 |
strip_import_prefix
|
文字列。デフォルトは 設定すると、このルールの 相対パス(スラッシュで始まらない)の場合は、パッケージ相対パスと見なされます。絶対パスは、リポジトリからの相対パスとして認識されます。
|