Правила
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)
Устарело. Пожалуйста, используйте 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 |
|
mnemonic |
|
output_files |
$(OUT) в command_line форматируется, либо путём указания пути к одному файлу, либо выходной директории в случае нескольких файлов. Возможные значения: "single", "multiple". |
plugin |
--plugin=protoc-gen-PLUGIN= |
plugin_format_flag |
--plugin=protoc-gen-PLUGIN= |
progress_message |
|
proto_compiler |
|
runtime |
|
proto_library
proto_library(name, deps, srcs, data, 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 для определения библиотек protocol buffers, которые могут использоваться из нескольких языков. 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-библиотека. Это правило proto_library с одним или несколькими другими правилами proto_library в deps. Этот шаблон может использоваться для экспорта публичного API под постоянным именем. |
exports |
|
import_prefix |
При установке, файлы исходного кода .proto в атрибуте Префикс в атрибуте |
strip_import_prefix |
При установке, файлы исходного кода .proto в атрибуте Если это относительный путь (не начинающийся с косой черты), он рассматривается как пакетно-относительный. Если это абсолютный путь, он понимается как репозиторие-относительный путь. Префикс в атрибуте |