Правила
- cc_proto_library
- java_lite_proto_library
- java_proto_library
- proto_library
- py_proto_library
- proto_lang_toolchain
- proto_toolchain
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 генерирует код C++ из .proto файлов.
deps должно указывать на правила proto_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 | Список метки; значение по умолчанию proto_library для генерации кода C++. |
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 генерирует Java-код из .proto файлов.
deps должно указывать на правила proto_library
.
Пример:
java_library(
name = "lib",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
Аргументы
| Атрибуты | |
|---|---|
name | Имя; обязательно Уникальное имя для этой цели. |
deps | Список меток; значение по умолчанию proto_library для генерации Java-кода. |
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 генерирует Java-код из .proto файлов.
deps должно указывать на правила proto_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 | Список меток; значение по умолчанию 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, toolchains, visibility)
При использовании Bazel, загрузите правило с https://github.com/bazelbuild/rules_proto.
Используйте proto_library для определения библиотек протобуферов, которые могут использоваться из нескольких языков. Библиотека proto_library может быть указана в deps пункте поддерживаемых правил, таких как java_proto_library.
При компиляции из командной строки proto_library создает файл с именем foo-descriptor-set.proto.bin, который является набором дескрипторов для сообщений, указанных в правиле srcs. Файл является сериализованным FileDescriptorSet, описанным в https://developers.google.com/protocol-buffers/docs/techniques#self-description.
Он содержит только информацию о .proto файлах, напрямую указанных правилом proto_library; коллекция транзитивных наборов дескрипторов доступна через [ProtoInfo].transitive_descriptor_sets провайдер Starlark. См. документацию в proto_info.bzl.
Рекомендуемая организация кода:
- Одно правило
proto_libraryна файл.proto. - Файл с именем
foo.protoбудет находиться в правиле с именемfoo_proto, который находится в той же папке. - Правило
[language]_proto_libraryкоторое оборачивает правилоproto_libraryс именемfoo_protoдолжно называтьсяfoo_[language]_proto, и находиться в той же папке.
Аргументы
| Атрибуты | |
|---|---|
name | Имя; обязательно Уникальное имя для этой цели. |
deps | Список меток; значение по умолчанию proto_library от которых зависит цель. Правило proto_library может зависеть только от других целей proto_library. Оно не может зависеть от языковых библиотек. |
srcs | Список меток; значение по умолчанию .proto и .protodevel которые обрабатываются для создания цели. Обычно это не пустой список. Один из вариантов использования, где srcs может быть пустым – это alias-library. Это правило proto_library, содержащее одно или несколько других правил proto_library в deps. Этот шаблон можно использовать для экспорта публичного API под постоянным именем. |
allow_exports | Метка; значение по умолчанию |
exports | Список меток; значение по умолчанию |
import_prefix | Строка; значение по умолчанию При установке, файлы .proto исходного кода в атрибуте Префикс в атрибуте |
strip_import_prefix | Строка; значение по умолчанию При установке, файлы .proto исходного кода в атрибуте Если это относительный путь (не начинающийся с слеша), он рассматривается как относительный к пакету. Если это абсолютный путь, он рассматривается как относительный к репозиторию. Префикс в атрибуте |
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)
Аргументы
| Атрибуты | |
|---|---|
name | Имя; обязательно Уникальное имя для этой цели. |
deps | Список меток; значение по умолчанию |
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-компилятор.