Spec-Zone.ru › Bazel 7.0

Правила протобуфера

Правила

  • proto_lang_toolchain
  • proto_library

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) должно вызывать прото-компилятор. Некоторые правила LANG_proto_library позволяют указывать используемую цепочку инструментов с помощью флагов командной строки; обратитесь к их документации.

Обычно не нужно писать такие правила, если вы не хотите настроить Java-компилятор.

Нет компилятора. Прото-компилятор берётся из правила proto_library, которое мы прикрепляем. Он передаётся в качестве флага командной строки Blaze. Несколько функций требуют вызова прото-компилятора на самом правиле proto_library. Полезно гарантировать, что компилятор, используемый правилом 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

Список метков; значение по умолчанию []

Для файлов в атрибуте srcs правила blacklisted_protos не будет сгенерирован код. Это используется для файлов .proto, которые уже связаны с временем выполнения протобуфера, таких как any.proto.
command_line

Строка; обязательно

Это значение будет передано прото-компилятору для генерации кода. Включайте только части, специфичные для данного генератора/плагина кода (например, не включайте параметры -I).
  • $(OUT) специфично для LANG_proto_library. Ожидается, что правила определят, как они интерпретируют эту переменную. Например, для Java, $(OUT) будет заменено именем файла src-jar для создания.
mnemonic

Строка; значение по умолчанию "GenProto"

Это значение будет установлено как мнемоника на действии protoc.
output_files

Строка; значение по умолчанию "legacy"

Управляет тем, как $(OUT) в command_line форматируется: путём указания пути к одному файлу или каталогу вывода в случае нескольких файлов. Возможные значения: "single", "multiple".
plugin

Метка; значение по умолчанию None

Если указано, будет доступно действию, вызывающему прото-компилятор, и будет передано прото-компилятору: --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

Строка; значение по умолчанию ""

Если указано, это значение будет передано прото-компилятору для использования плагина. Значение должно содержать одиночный %s, который заменяется исполняемым файлом плагина. --plugin=protoc-gen-PLUGIN=<executable>.
progress_message

Строка; значение по умолчанию "Generating proto_library %{label}"

Это значение будет установлено в качестве сообщения о прогрессе на действии protoc.
proto_compiler

Метка; значение по умолчанию None

Исполняемый файл прото-компилятора. Если указано, эта цель будет использоваться в качестве прото-компилятора для генерации кода.
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 может быть перечислено в разделе 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; набор транзитивных описателей доступен через поставщика Starlark [ProtoInfo].transitive_descriptor_sets. См. документацию в ProtoInfo.java.

Рекомендуемая организация кода:

  • Одно правило 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

Метка; значение по умолчанию None

Необязательный список разрешений, предотвращающий повторную экспорт proto библиотеки или использование её в lang_proto_library, которая не находится в одном из перечисленных пакетов.
exports

Список метков; значение по умолчанию []

Список целей proto_library, которые можно использовать с помощью "import public" в прото-источнике.
import_prefix

Строка; значение по умолчанию ""

Префикс для добавления к путям файлов .proto в этом правиле.

Если установлено, .proto исходные файлы в атрибуте srcs этого правила доступны в виде значения этого атрибута, добавленного к их пути относительно хранилища.

Префикс в атрибуте strip_import_prefix удаляется перед добавлением этого префикса.

strip_import_prefix

Строка; значение по умолчанию ""

Префикс для удаления из путей .proto файлов в этом правиле.

Если установлено, .proto исходные файлы в атрибуте srcs этого правила доступны по своему пути после удаления этого префикса.

Если это относительный путь (не начинающийся с косой черты), он рассматривается как относительный к пакету. Если это абсолютный путь, он интерпретируется как относительный к хранилищу.

Префикс в атрибуте import_prefix добавляется после удаления этого префикса.

За исключением случаев, когда указано иначе, содержание этой страницы лицензировано по Лицензии Creative Commons Attribution 4.0, а примеры кода лицензированы по Лицензии Apache 2.0. Подробности см. в Политиках сайта Google Developers. Java — зарегистрированная торговая марка Oracle и/или её дочерних компаний.

Последнее обновление 2023-12-11 UTC.

Licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License.
https://bazel.build/versions/7.0.0/reference/be/protocol-buffer

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API