Правила
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).
|
mnemonic | Строка; значение по умолчанию |
output_files | Строка; значение по умолчанию $(OUT) в command_line форматируется: путём указания пути к одному файлу или каталогу вывода в случае нескольких файлов. Возможные значения: "single", "multiple". |
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 может быть перечислено в разделе 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 | Метка; значение по умолчанию |
exports | Список метков; значение по умолчанию |
import_prefix | Строка; значение по умолчанию Если установлено, .proto исходные файлы в атрибуте Префикс в атрибуте |
strip_import_prefix | Строка; значение по умолчанию Если установлено, .proto исходные файлы в атрибуте Если это относительный путь (не начинающийся с косой черты), он рассматривается как относительный к пакету. Если это абсолютный путь, он интерпретируется как относительный к хранилищу. Префикс в атрибуте |