Reglas
proto_lang_toolchain
Ver el código 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
) deben invocar el
proto-compiler.
Algunas reglas de 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 protocompilador se toma de la regla proto_library a la que nos adjuntamos. Se pasa como una marca de línea de comandos a Blaze.
Varias funciones requieren que se invoque un proto-compiler en la misma regla proto_library.
Es beneficioso aplicar el compilador que usa LANG_proto_library es 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 objetivo. |
blacklisted_protos
|
Lista de etiquetas; el valor predeterminado es srcs de
blacklisted_protos
Se usa para archivos .proto que ya están vinculados en entornos de ejecución proto, como
any.proto
|
command_line
|
String; obligatorio. Este valor se pasará a proto-compiler para generar el código. Incluye solo las partes específicas de este generador de código o complemento (p. ej., no incluyas parámetros -I).
|
mnemonic
|
Cadena; el valor predeterminado es |
output_files
|
Cadena; el valor predeterminado es $(OUT) en command_line , ya sea mediante
una ruta a un solo archivo o directorio de salida en caso de varios archivos.
Los valores posibles son “single”, “multiple”.
|
plugin
|
Etiqueta; el valor predeterminado es --plugin=protoc-gen-PLUGIN=<executable>.
|
plugin_format_flag
|
Cadena; el valor predeterminado es --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
Cadena; el valor predeterminado es |
proto_compiler
|
Etiqueta; el valor predeterminado es |
runtime
|
Etiqueta (Label); 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)
Obsoleta. Utiliza https://github.com/bazelbuild/rules_proto.
Usa proto_library
para definir bibliotecas de búferes de protocolo que se pueden usar desde varios lenguajes. Se puede incluir un proto_library
en la cláusula deps
de las reglas admitidas, 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 de la
envía 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 menciona directamente 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_library
por archivo.proto
. - Un archivo llamado
foo.proto
estará en una regla llamadafoo_proto
, que se encuentra en el mismo paquete. - Un
[language]_proto_library
que une unproto_library
llamado Se debe llamar afoo_proto
foo_[language]_proto
y deben ubicarse en el mismo paquete.
Argumentos
Atributos | |
---|---|
name |
Nombre: obligatorio. Un nombre único para este destino. |
deps
|
Es una lista de etiquetas. El valor predeterminado es proto_library de las que depende el destino.
Un proto_library solo puede depender de otros
proto_library objetivos.
Es posible que no dependa de las bibliotecas específicas de un lenguaje.
|
srcs
|
Lista de etiquetas; el valor predeterminado es .proto y .protodevel que se procesan para crear el destino. Por lo general, es una lista no vacía. Un caso de uso
donde srcs puede estar vacío es una biblioteca de alias. Esta es una
proto_library que tiene una o más proto_library en deps .
Este patrón se puede usar, p.ej., exportar una API pública con un nombre persistente.
|
allow_exports
|
Etiqueta (Label); el valor predeterminado es |
exports
|
Es una lista de etiquetas. El valor predeterminado es |
import_prefix
|
Cadena; 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
|
Cadena; 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 diagonal), se considera una ruta de acceso relativa al paquete. Si es una absoluta, se entiende como una ruta de acceso relativa de repositorio. El prefijo del atributo |