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

ルール

cc_proto_library

ルールのソースを表示
cc_proto_library(name, deps, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, package_metadata, 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, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, package_metadata, 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, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, licenses, package_metadata, 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, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exports, extension_declarations, features, import_prefix, licenses, option_deps, package_metadata, restricted_to, strip_import_prefix, tags, target_compatible_with, testonly, toolchains, visibility)

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

コマンドラインでコンパイルすると、proto_libraryfoo-descriptor-set.proto.bin という名前のファイルを作成します。これは、ルールのソースのメッセージの記述子セットです。このファイルは、 FileDescriptorSet で説明されているシリアル化された https://developers.google.com/protocol-buffers/docs/techniques#self-descriptionです。

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

推奨されるコード構成:

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

引数

属性
name

名前(必須)

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

deps

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

ターゲットが依存する他の proto_library ルールのリスト。 proto_library は、他の proto_library ターゲットにのみ依存できます。言語固有のライブラリに依存することはできません。
srcs

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

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

ラベル。デフォルトは None

リストされたパッケージのいずれかにない lang_proto_library で proto ライブラリが再エクスポートまたは使用されないようにする、省略可能な許可リスト。
exports

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

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

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

拡張機能の宣言を含むファイルのリスト。この属性は、MessageSet でのみ使用できます。
import_prefix

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

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

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

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

option_deps

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

オプションのみを対象として、ターゲットが依存する他の proto_library ルールのリスト。 proto_library は、他の proto_library ターゲットにのみ依存できます。言語固有のライブラリに依存することはできません。
strip_import_prefix

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

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

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

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

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

py_proto_library

ルールのソースを表示
py_proto_library(name, deps, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
`py_proto_library` を使用して、`.proto` ファイルから Python ライブラリを生成します。 `py_proto_library` ルールは、`proto_library` ルール `foo_proto` をラップする場合、`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 つのターゲット(対象の proto ライブラリ)です。 `ProtoInfo` を提供する任意のターゲットを指定できます。

proto_lang_toolchain

ルールのソースを表示
proto_lang_toolchain(name, allowlist_different_package, aspect_hints, blacklisted_protos, command_line, compatible_with, denylisted_protos, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, mnemonic, output_files, package_metadata, 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 コンパイラは、アタッチする 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

名前(必須)

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

allowlist_different_package

ラベル。デフォルトは None

blacklisted_protos

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

非推奨です。denylisted_protos のエイリアス。今後のリリースで削除される予定です。
command_line

文字列(必須)

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

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

denylisted_protossrcs 属性のファイルに対してコードは生成されません。 これは、proto ランタイムにすでにリンクされている .proto ファイルに使用されます。 any.proto.
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 が 1 つ含まれている必要があります。 --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, aspect_hints, command_line, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, mnemonic, output_files, package_metadata, 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