Reglas
proto_lang_toolchain
Ver la fuente de la reglaproto_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)
Si usas Bazel, carga la regla desde https://github.com/bazelbuild/rules_proto.
Especifica cómo una regla LANG_proto_library (p.ej., java_proto_library) debe invocar el compilador de proto.
Algunas reglas LANG_proto_library permiten especificar qué cadena de herramientas usar con marcas de línea de comandos. Consulta su documentación.
Por lo general, no debes escribir ese tipo de reglas, a menos que desees ajustar tu compilador de Java.
No hay compilador. El compilador de proto se toma de la regla proto_library a la que adjuntamos. Se pasa como una marca de línea de comandos a Blaze.
Varias funciones requieren que se invoque un compilador de proto en la regla proto_library.
Es beneficioso aplicar que el compilador que usa LANG_proto_library sea el mismo que el que usa proto_library.
Ejemplos
Un ejemplo simple sería el siguiente:
proto_lang_toolchain(
name = "javalite_toolchain",
command_line = "--javalite_out=shared,immutable:$(OUT)",
plugin = ":javalite_plugin",
runtime = ":protobuf_lite",
)
Argumentos
| Atributos | |
|---|---|
name |
Nombre; obligatorio Un nombre único para este destino. |
blacklisted_protos
|
Lista de etiquetas; el valor predeterminado es srcs atributo de
blacklisted_protos.
Se usa para archivos .proto que ya están vinculados a entornos de ejecución de proto, como
any.proto.
|
command_line
|
String; obligatorio Este valor se pasará al compilador de proto para generar el código. Solo incluye las partes específicas de este generador de código o complemento (p.ej., no incluyas parámetros -I)
|
mnemonic
|
String; el valor predeterminado es |
output_files
|
String; el valor predeterminado es $(OUT) en command_line, ya sea mediante
una ruta de acceso a un solo archivo o un directorio de salida en caso de varios archivos.
Los valores posibles son "single" y "multiple".
|
plugin
|
Etiqueta; el valor predeterminado es --plugin=protoc-gen-PLUGIN=<executable>.
|
plugin_format_flag
|
String; el valor predeterminado es --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
String; el valor predeterminado es |
proto_compiler
|
Etiqueta; el valor predeterminado es |
runtime
|
Etiqueta; el valor predeterminado es |
proto_library
Ver la fuente de la reglaproto_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)
Ya no está disponible. En su lugar, usa https://github.com/bazelbuild/rules_proto.
Usa proto_library para definir bibliotecas de búferes de protocolo
que se pueden usar en varios lenguajes. Una proto_library se puede enumerar
en la cláusula deps de las reglas compatibles, como java_proto_library.
Cuando se compila en la línea de comandos, un proto_library crea un archivo llamado
foo-descriptor-set.proto.bin, que es el conjunto de descriptores para los
mensajes de la regla srcs. El archivo es un FileDescriptorSet serializado, que se
describe en
https://developers.google.com/protocol-buffers/docs/techniques#self-description.
Solo contiene información sobre los archivos .proto que se mencionan directamente en una regla proto_library. La colección de conjuntos de descriptores transitivos está disponible a través del proveedor de Starlark [ProtoInfo].transitive_descriptor_sets.
Consulta la documentación en ProtoInfo.java.
Organización de código recomendada:
- Una regla
proto_librarypor archivo.proto. - Un archivo llamado
foo.protoestará en una regla llamadafoo_proto, que se encuentra en el mismo paquete. - Una
[language]_proto_libraryque encapsula unaproto_libraryllamadafoo_protodebe llamarsefoo_[language]_protoy ubicarse en el mismo paquete.
Argumentos
| Atributos | |
|---|---|
name |
Nombre; obligatorio Un nombre único para este destino. |
deps
|
Lista de etiquetas; el valor predeterminado es proto_library de las que depende el destino.
Una proto_library solo puede depender de otros
destinos proto_library.
No puede depender de bibliotecas específicas del lenguaje.
|
srcs
|
Lista de etiquetas; el valor predeterminado es .proto y .protodevel archivos que se procesan para crear el destino. Por lo general, es una lista no vacía. Un caso de uso
en el que srcs puede estar vacío es una biblioteca de alias. Esta es una
regla proto_library que tiene una o más proto_library en deps.
Este patrón se puede usar para, p.ej., exportar una API pública con un nombre persistente.
|
allow_exports
|
Etiqueta; el valor predeterminado es |
exports
|
Lista de etiquetas; el valor predeterminado es |
import_prefix
|
String; el valor predeterminado es Cuando se establece, se puede acceder a los archivos fuente .proto en el atributo El prefijo del atributo |
strip_import_prefix
|
String; el valor predeterminado es Cuando se establece, se puede acceder a los archivos fuente .proto en el atributo Si es una ruta de acceso relativa (no comienza con una barra), se toma como una relativa al paquete una. Si es una absoluta, se entiende como una ruta de acceso relativa al repositorio. El prefijo del atributo |