Regras
- cc_proto_library
- java_lite_proto_library
- java_proto_library
- proto_library
- py_proto_library
- proto_lang_toolchain
- proto_toolchain
cc_proto_library
Ver origem da regracc_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)
O cc_proto_library
gera código C++ de arquivos .proto
.
deps
precisa apontar para regras de proto_library
.
Exemplo:
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 |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é proto_library para gerar código C++.
|
java_lite_proto_library
Ver origem da regrajava_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)
O java_lite_proto_library
gera código Java de arquivos .proto
.
deps
precisa apontar para regras de proto_library
.
Exemplo:
java_library(
name = "lib",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
Argumentos
Atributos | |
---|---|
name |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é proto_library para gerar código Java.
|
java_proto_library
Ver origem da regrajava_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)
O java_proto_library
gera código Java de arquivos .proto
.
deps
precisa apontar para regras de proto_library
.
Exemplo:
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 |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é proto_library para gerar código Java.
|
proto_library
Ver origem da regraproto_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)
Use proto_library
para definir bibliotecas de buffers de protocolo que podem ser usadas em várias linguagens. Um proto_library
pode ser listado na cláusula deps
de regras compatíveis, como java_proto_library
.
Quando compilado na linha de comando, um proto_library
cria um arquivo
chamado foo-descriptor-set.proto.bin
, que é o conjunto de descritores para
as mensagens que a regra origina. O arquivo é um
FileDescriptorSet
serializado, descrito em
https://developers.google.com/protocol-buffers/docs/techniques#self-description.
Ele contém apenas informações sobre os arquivos .proto
mencionados diretamente por uma regra proto_library
. A coleção de conjuntos de descritores transitivos está disponível pelo provedor [ProtoInfo].transitive_descriptor_sets
do Starlark.
Consulte a documentação em proto_info.bzl
.
Organização de código recomendada:
- Uma regra
proto_library
por arquivo.proto
. - Um arquivo chamado
foo.proto
estará em uma regra chamadafoo_proto
, que está localizada no mesmo pacote. - Um
[language]_proto_library
que envolve umproto_library
chamadofoo_proto
precisa ser chamado defoo_[language]_proto
e estar localizado no mesmo pacote.
Argumentos
Atributos | |
---|---|
name |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é proto_library de que o destino depende.
Um proto_library só pode depender de outros destinos proto_library . Não pode depender de bibliotecas específicas de linguagem.
|
srcs
|
Lista de rótulos. O padrão é .proto e .protodevel que são
processados para criar o destino. Normalmente, essa é uma lista não vazia. Um caso de uso
em que srcs pode estar vazio é uma biblioteca de alias. Essa é uma regra
proto_library que tem uma ou mais proto_library em deps .
Esse padrão pode ser usado, por exemplo, para exportar uma API pública com um nome permanente.
|
allow_exports
|
Rótulo; o padrão é |
exports
|
Lista de rótulos. O padrão é |
import_prefix
|
String; o padrão é Quando definido, os arquivos de origem .proto no atributo O prefixo no atributo |
strip_import_prefix
|
String; o padrão é Quando definido, os arquivos de origem .proto no atributo Se for um caminho relativo (não começar com uma barra), ele será considerado relativo ao pacote. Se for absoluto, ele será entendido como um caminho relativo ao repositório. O prefixo no atributo |
py_proto_library
Ver origem da regrapy_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 |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é |
proto_lang_toolchain
Ver origem da regraproto_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)
Se você estiver usando o Bazel, carregue a regra em https://github.com/bazelbuild/rules_proto.
Especifica como uma regra LANG_proto_library (por exemplo, java_proto_library
) precisa invocar o
proto-compiler.
Algumas regras LANG_proto_library permitem especificar qual cadeia de ferramentas usar com flags de linha de comando. Consulte a documentação delas.
Normalmente, você não deve escrever esse tipo de regra, a menos que queira ajustar seu compilador Java.
Não há um compilador. O proto-compiler é retirado da regra proto_library a que anexamos. Ele é transmitido como uma flag de linha de comando para o Blaze.
Vários recursos exigem que um proto-compiler seja invocado na própria regra proto_library.
É recomendável garantir que o compilador usado por LANG_proto_library seja o mesmo que o usado por
proto_library
.
Exemplos
Um exemplo simples seria:
proto_lang_toolchain(
name = "javalite_toolchain",
command_line = "--javalite_out=shared,immutable:$(OUT)",
plugin = ":javalite_plugin",
runtime = ":protobuf_lite",
)
Argumentos
Atributos | |
---|---|
name |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
allowlist_different_package
|
Rótulo; o padrão é |
blacklisted_protos
|
Lista de rótulos. O padrão é srcs de
blacklisted_protos .
Isso é usado para arquivos .proto já vinculados a ambientes de execução do protocolo, como
any.proto .
|
command_line
|
String; obrigatório Esse valor será transmitido ao proto-compiler para gerar o código. Inclua apenas as partes específicas desse gerador de código/plug-in (por exemplo, não inclua parâmetros -I)
|
mnemonic
|
String; o padrão é |
output_files
|
String; o padrão é $(OUT) em command_line é formatado, seja por um caminho para um único arquivo ou um diretório de saída no caso de vários arquivos.
Os valores possíveis são: "single" e "multiple".
|
plugin
|
Rótulo; o padrão é --plugin=protoc-gen-PLUGIN=<executable>.
|
plugin_format_flag
|
String; o padrão é --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
String; o padrão é |
protoc_minimal_do_not_use
|
Rótulo; o padrão é |
runtime
|
Rótulo; o padrão é |
toolchain_type
|
Rótulo; o padrão é |
proto_toolchain
Ver origem da regraproto_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 |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
command_line
|
String; o padrão é |
mnemonic
|
String; o padrão é |
output_files
|
String; o padrão é |
progress_message
|
String; o padrão é |
proto_compiler
|
Rótulo; o padrão é |