Regras
proto_lang_toolchain
Ver origem da regraproto_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)
Se você estiver usando o Bazel, carregue a regra de https://github.com/bazelbuild/rules_proto.
Especifica como uma regra LANG_proto_library (por exemplo, java_proto_library) deve invocar o proto-compilador.
Algumas regras LANG_proto_library permitem especificar qual conjunto de ferramentas usar com flags de linha de comando. Consulte a documentação delas.
Normalmente, não é necessário escrever esse tipo de regra, a menos que você queira ajustar o compilador Java.
Não há compilador. O proto-compilador é extraído 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-compilador seja invocado na própria regra proto_library.
É útil impor que o compilador usado por LANG_proto_library seja o mesmo que 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 esse destino. |
blacklisted_protos
|
Lista de rótulos; o padrão é srcs atributo de
blacklisted_protos.
Isso é usado para arquivos .proto que já estão vinculados a tempos de execução de proto, como
any.proto.
|
command_line
|
String; obrigatório Esse valor será transmitido ao proto-compilador para gerar o código. Inclua apenas as partes específicas desse gerador/plug-in de código (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 diretório de saída no caso de vários arquivos.
Os valores possíveis são: "single", "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 é |
proto_compiler
|
Rótulo; o padrão é |
runtime
|
Rótulo; o padrão é |
proto_library
Ver origem da regraproto_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)
Obsoleto. Use https://github.com/bazelbuild/rules_proto.
Use proto_library para definir bibliotecas de buffers de protocolo
que podem ser usadas em vários idiomas. Um proto_library pode ser listado
na cláusula deps de regras compatíveis, como java_proto_library.
Quando compilada na linha de comando, uma proto_library cria um arquivo chamado
foo-descriptor-set.proto.bin, que é o conjunto de descritores para as
mensagens das origens de regra. O arquivo é um FileDescriptorSet serializado, descrito em
https://developers.google.com/protocol-buffers/docs/techniques#self-description (links em inglês).
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 no provedor Starlark [ProtoInfo].transitive_descriptor_sets.
Consulte a documentação em ProtoInfo.java.
Organização de código recomendada:
- Uma regra
proto_librarypor arquivo.proto. - Um arquivo chamado
foo.protoestará em uma regra chamadafoo_proto, que está localizada no mesmo pacote. - Uma
[language]_proto_libraryque envolve umaproto_librarychamadafoo_protoprecisa ser chamada defoo_[language]_protoe estar localizada no mesmo pacote.
Argumentos
| Atributos | |
|---|---|
name |
Nome; obrigatório Um nome exclusivo para esse destino. |
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.
Ela não pode depender de bibliotecas específicas do idioma.
|
srcs
|
Lista de rótulos; o padrão é .proto e .protodevel arquivos que são processados para criar o destino. Geralmente, essa é uma lista não vazia. Um caso de uso
onde srcs pode estar vazio é uma biblioteca de alias. Essa é uma
regra proto_library que tem uma ou mais outras proto_library em deps.
Esse padrão pode ser usado para, por exemplo, exportar uma API pública com um nome persistente.
|
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 (que não começa com uma barra), ele será considerado um caminho relativo ao pacote. Se for um caminho absoluto, ele será entendido como um caminho relativo ao repositório. O prefixo no atributo |