Reglas
- cc_proto_library
- java_lite_proto_library
- java_proto_library
- proto_library
- py_proto_library
- proto_lang_toolchain
- proto_toolchain
cc_proto_library
Ver la fuente de la reglacc_proto_library(name, deps, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
cc_proto_library
genera código C++ a partir de archivos .proto
.
deps
debe apuntar a las reglas de proto_library
.
Ejemplo:
cc_library(
name = "lib",
deps = [":foo_cc_proto"],
)
cc_proto_library(
name = "foo_cc_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
Argumentos
Atributos | |
---|---|
name |
Nombre: Obligatorio Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es proto_library para las que se generará código en C++.
|
java_lite_proto_library
Ver la fuente de la reglajava_lite_proto_library(name, deps, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_lite_proto_library
genera código Java a partir de archivos .proto
.
deps
debe apuntar a las reglas de proto_library
.
Ejemplo:
java_library(
name = "lib",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
Argumentos
Atributos | |
---|---|
name |
Nombre: Obligatorio Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es proto_library para las que se generará código Java.
|
java_proto_library
Ver la fuente de la reglajava_proto_library(name, deps, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, licenses, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_proto_library
genera código Java a partir de archivos .proto
.
deps
debe apuntar a las reglas de proto_library
.
Ejemplo:
java_library(
name = "lib",
runtime_deps = [":foo_java_proto"],
)
java_proto_library(
name = "foo_java_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
Argumentos
Atributos | |
---|---|
name |
Nombre: Obligatorio Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es proto_library para las que se generará código Java.
|
proto_library
Ver la fuente de la reglaproto_library(name, deps, srcs, data, allow_exports, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exports, features, import_prefix, licenses, package_metadata, restricted_to, strip_import_prefix, tags, target_compatible_with, testonly, toolchains, visibility)
Usa proto_library
para definir bibliotecas de búferes de protocolo que se pueden usar en 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 para los mensajes de los src de la regla. 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
mencionados directamente por una regla proto_library
. La colección de conjuntos de descriptores transitivos está disponible a través del proveedor [ProtoInfo].transitive_descriptor_sets
de Starlark.
Consulta la documentación en proto_info.bzl
.
Organización del código recomendada:
- Una regla de
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 contiene unproto_library
llamadofoo_proto
debe llamarsefoo_[language]_proto
y estar ubicado en el mismo paquete.
Argumentos
Atributos | |
---|---|
name |
Nombre: Obligatorio Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es proto_library de las que depende el destino.
Un proto_library solo puede depender de otros destinos de proto_library . No puede depender de bibliotecas específicas del lenguaje.
|
srcs
|
Lista de etiquetas. El valor predeterminado es .proto y .protodevel que se procesan para crear el destino. Por lo general, esta 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 reglas proto_library en deps .
Este patrón se puede usar, p.ej., para 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
|
Cadena. El valor predeterminado es Cuando se configura, 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 configura, los archivos fuente .proto en el atributo Si es una ruta relativa (no comienza con una barra), se considera relativa al paquete. Si es absoluta, se entiende como una ruta de acceso relativa al repositorio. El prefijo del atributo |
py_proto_library
Ver la fuente de la reglapy_proto_library(name, deps, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Argumentos
Atributos | |
---|---|
name |
Nombre: Obligatorio Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es |
proto_lang_toolchain
Ver la fuente de la reglaproto_lang_toolchain(name, allowlist_different_package, aspect_hints, blacklisted_protos, command_line, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, mnemonic, output_files, package_metadata, plugin, plugin_format_flag, progress_message, protoc_minimal_do_not_use, restricted_to, runtime, tags, target_compatible_with, testonly, toolchain_type, toolchains, visibility)
Si usas Bazel, carga la regla desde https://github.com/bazelbuild/rules_proto.
Especifica cómo se compila una regla LANG_proto_library (p.ej., java_proto_library
) debería invocar el compilador de proto.
Algunas reglas de LANG_proto_library permiten especificar qué cadena de herramientas se debe usar con marcas de línea de comandos. Consulta su documentación.
Por lo general, no deberías escribir ese tipo de reglas, a menos que quieras 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 exigir 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 Es un nombre único para este destino. |
allowlist_different_package
|
Etiqueta: El valor predeterminado es |
blacklisted_protos
|
Lista de etiquetas. El valor predeterminado es srcs de blacklisted_protos .
Se usa para archivos .proto que ya están vinculados a tiempos de ejecución de proto, como any.proto .
|
command_line
|
Cadena; obligatorio Este valor se pasará al compilador de proto para generar el código. Solo incluye las partes específicas de este complemento o generador de código (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 con una ruta a un solo archivo o un directorio de salida en caso de que haya varios archivos.
Los valores posibles son "single" y "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 |
protoc_minimal_do_not_use
|
Etiqueta: El valor predeterminado es |
runtime
|
Etiqueta: El valor predeterminado es |
toolchain_type
|
Etiqueta: El valor predeterminado es |
proto_toolchain
Ver la fuente de la reglaproto_toolchain(name, aspect_hints, command_line, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, mnemonic, output_files, package_metadata, progress_message, proto_compiler, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Argumentos
Atributos | |
---|---|
name |
Nombre: Obligatorio Es un nombre único para este destino. |
command_line
|
Cadena. El valor predeterminado es |
mnemonic
|
Cadena. El valor predeterminado es |
output_files
|
Cadena. El valor predeterminado es |
progress_message
|
Cadena. El valor predeterminado es |
proto_compiler
|
Etiqueta: El valor predeterminado es |