Regras
proto_lang_toolchain
Exibir 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 estiver usando o Bazel, carregue a regra em https://github.com/bazelbuild/rules_proto.
Especifica como uma regra ham_proto_library (por exemplo, java_proto_library
) precisa invocar o proto-compilador.
Algumas regras do Lang_proto_library permitem especificar qual conjunto de ferramentas usar usando sinalizações de linha de comando.
Consulte a documentação.
Normalmente, não é recomendável escrever esse tipo de regra, a menos que você queira ajustar seu compilador Java.
Não há compilador. O proto-compiler é retirado da regra proto_library que anexamos. Ela é
transmitida como uma sinalização de linha de comando para o Blaze.
Vários recursos exigem que um proto-compiler seja invocado na própria regra proto_library.
É vantajoso aplicar o compilador que ham_proto_library usa é o mesmo que o
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 o destino. |
blacklisted_protos
|
Lista de rótulos. O padrão é srcs de
blacklisted_protos .
Isso é usado para arquivos .proto que já estão vinculados a ambientes de execução .proto, como
any.proto .
|
command_line
|
String, obrigatório Esse valor será passado 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 os 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: "único", "vários".
|
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
Exibir 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. Em vez disso, use https://github.com/bazelbuild/rules_proto.
Use proto_library
para definir bibliotecas de buffers de protocolo
que podem ser usadas a partir de várias linguagens. Um proto_library
pode ser listado na cláusula deps
das 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 descritor definido para as
mensagens que os srcs da regra. O arquivo é um FileDescriptorSet
serializado, que é
descrito em
https://developers.google.com/protocol-buffers/docs/techniques#self-description.
Ela 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
Starlark.
Consulte a documentação em ProtoInfo.java
.
Organização de código recomendada:
- Uma regra
proto_library
por arquivo.proto
. - Um arquivo chamado
foo.proto
estará em uma regra chamadafoo_proto
, localizada no mesmo pacote. - Um
[language]_proto_library
que encapsula 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 o destino. |
deps
|
Lista de rótulos. O padrão é proto_library de que a meta depende.
Um proto_library pode depender apenas de outros destinos proto_library .
Ele pode não depender de bibliotecas específicas da linguagem.
|
srcs
|
Lista de rótulos. O padrão é .proto e .protodevel que são processados para criar o destino. Geralmente, essa lista não é vazia. Um caso de uso
em que srcs pode ficar vazio é uma alias-library. Essa é uma regra de 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 definidos, os arquivos de origem .proto no atributo O prefixo no atributo |
strip_import_prefix
|
String. O padrão é Quando definidos, os arquivos de origem .proto no atributo Se for um caminho relativo (que não começa com uma barra), ele será considerado relativo ao pacote. Se for absoluto, será entendido como um caminho relativo ao repositório. O prefixo no atributo |