Aturan
proto_lang_toolchain
Lihat sumber aturanproto_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)
Jika menggunakan Bazel, muat aturan dari https://github.com/bazelbuild/rules_proto.
Menentukan cara aturan LANG_proto_library (misalnya, java_proto_library) harus memanggil proto-compiler.
Beberapa aturan LANG_proto_library memungkinkan Anda menentukan toolchain yang akan digunakan menggunakan flag command line; lihat dokumentasinya.
Biasanya, Anda tidak boleh menulis aturan semacam itu kecuali jika ingin menyesuaikan compiler Java.
Tidak ada compiler. Proto-compiler diambil dari aturan proto_library yang kami lampirkan. Compiler ini diteruskan sebagai flag command line ke Blaze.
Beberapa fitur memerlukan proto-compiler untuk dipanggil pada aturan proto_library itu sendiri.
Sebaiknya pastikan compiler yang digunakan LANG_proto_library sama dengan yang digunakan proto_library.
Contoh
Contoh sederhananya adalah:
proto_lang_toolchain(
name = "javalite_toolchain",
command_line = "--javalite_out=shared,immutable:$(OUT)",
plugin = ":javalite_plugin",
runtime = ":protobuf_lite",
)
Argumen
| Atribut | |
|---|---|
name |
Nama; wajib Nama unik untuk target ini. |
blacklisted_protos
|
Daftar label; defaultnya adalah srcs dari
blacklisted_protos.
Atribut ini digunakan untuk file .proto yang sudah ditautkan ke runtime proto, seperti
any.proto.
|
command_line
|
String; wajib Nilai ini akan diteruskan ke proto-compiler untuk membuat kode. Hanya sertakan bagian yang khusus untuk plugin/pembuat kode ini (misalnya, jangan sertakan parameter -I)
|
mnemonic
|
String; defaultnya adalah |
output_files
|
String; defaultnya adalah $(OUT) dalam command_line diformat, baik berdasarkan
jalur ke satu file atau direktori output jika ada beberapa file.
Nilai yang mungkin adalah: "single", "multiple".
|
plugin
|
Label; defaultnya adalah --plugin=protoc-gen-PLUGIN=<executable>.
|
plugin_format_flag
|
String; defaultnya adalah --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
String; defaultnya adalah |
proto_compiler
|
Label; defaultnya adalah |
runtime
|
Label; defaultnya adalah |
proto_library
Lihat sumber aturanproto_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)
Tidak digunakan lagi. Sebagai gantinya, gunakan https://github.com/bazelbuild/rules_proto.
Gunakan proto_library untuk menentukan library buffer protokol
yang dapat digunakan dari beberapa bahasa. A proto_library dapat dicantumkan
dalam klausa deps dari aturan yang didukung, seperti java_proto_library.
Saat dikompilasi di command line, a proto_library akan membuat file bernama
foo-descriptor-set.proto.bin, yang merupakan kumpulan deskriptor untuk the
pesan srcs aturan. File ini adalah FileDescriptorSet yang diserialisasi, yang
dijelaskan di
https://developers.google.com/protocol-buffers/docs/techniques#self-description.
File ini hanya berisi informasi tentang file .proto yang secara langsung disebutkan oleh aturan proto_library; kumpulan kumpulan deskriptor transitif tersedia melalui penyedia Starlark [ProtoInfo].transitive_descriptor_sets.
Lihat dokumentasi di ProtoInfo.java.
Organisasi kode yang direkomendasikan:
- Satu aturan
proto_libraryper file.proto. - File bernama
foo.protoakan berada dalam aturan bernamafoo_proto, yang terletak di paket yang sama. - A
[language]_proto_libraryyang menggabungkanproto_librarybernamafoo_protoharus disebutfoo_[language]_proto, dan berada di paket yang sama.
Argumen
| Atribut | |
|---|---|
name |
Nama; wajib Nama unik untuk target ini. |
deps
|
Daftar label; defaultnya adalah proto_library lain yang menjadi dependensi target.
A proto_library hanya dapat bergantung pada target
proto_library lainnya.
Target ini tidak dapat bergantung pada library khusus bahasa.
|
srcs
|
Daftar label; defaultnya adalah .proto dan .protodevel yang
diproses untuk membuat target. Biasanya, daftar ini tidak kosong. Salah satu kasus penggunaan
saat srcs dapat kosong adalah alias-library. Ini adalah aturan proto_library yang memiliki satu atau beberapa proto_library lain di deps.
Pola ini dapat digunakan untuk, misalnya, mengekspor API publik dengan nama yang persisten.
|
allow_exports
|
Label; defaultnya adalah |
exports
|
Daftar label; defaultnya adalah |
import_prefix
|
String; defaultnya adalah Jika ditetapkan, file sumber .proto dalam atribut Awalan dalam atribut |
strip_import_prefix
|
String; defaultnya adalah Jika ditetapkan, file sumber .proto dalam atribut Jika jalur ini relatif (tidak dimulai dengan garis miring), jalur ini akan dianggap sebagai jalur relatif paket. Jika jalur ini absolut, jalur ini akan dipahami sebagai jalur relatif repositori. Awalan dalam atribut |