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 penentuan toolchain yang akan digunakan menggunakan tanda command line;
lihat dokumentasinya.
Biasanya Anda tidak boleh menulis aturan semacam itu kecuali jika Anda ingin menyesuaikan compiler Java.
Tidak ada compiler. Proto-compiler diambil dari aturan proto_library yang kita lampirkan. Nilai ini diteruskan sebagai tanda command line ke Blaze.
Beberapa fitur memerlukan pemanggilan proto-compiler pada aturan proto_library itu sendiri.
Sebaiknya terapkan 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 .
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 menghasilkan kode. Hanya sertakan bagian yang khusus untuk generator/plugin kode ini (misalnya, jangan sertakan parameter -I)
|
mnemonic
|
String; default-nya adalah |
output_files
|
String; default-nya 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; default-nya adalah --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
String; default-nya 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. proto_library
dapat dicantumkan
dalam klausul deps
dari aturan yang didukung, seperti java_proto_library
.
Saat dikompilasi di command line, proto_library
membuat file bernama
foo-descriptor-set.proto.bin
, yang merupakan set deskriptor untuk
pesan yang di-src oleh aturan. File adalah FileDescriptorSet
yang diserialisasi, yang
dijelaskan di
https://developers.google.com/protocol-buffers/docs/techniques#self-description.
Objek ini hanya berisi informasi tentang file .proto
yang disebutkan langsung oleh
aturan proto_library
; kumpulan set deskriptor transitif tersedia melalui
penyedia Starlark [ProtoInfo].transitive_descriptor_sets
.
Lihat dokumentasi di ProtoInfo.java
.
Organisasi kode yang direkomendasikan:
- Satu aturan
proto_library
per file.proto
. - File bernama
foo.proto
akan berada dalam aturan bernamafoo_proto
, yang berada di paket yang sama. -
[language]_proto_library
yang membungkusproto_library
bernamafoo_proto
harus dipanggilfoo_[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 lainnya yang bergantung pada target.
proto_library hanya dapat bergantung pada target
proto_library lainnya.
Mungkin tidak bergantung pada library khusus bahasa.
|
srcs
|
Daftar label; defaultnya adalah .proto dan .protodevel yang
diproses untuk membuat target. Ini biasanya berupa daftar yang tidak kosong. Salah satu kasus penggunaan
dengan srcs yang 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 persisten.
|
allow_exports
|
Label; defaultnya adalah |
exports
|
Daftar label; defaultnya adalah |
import_prefix
|
String; default-nya adalah Jika disetel, file sumber .proto dalam atribut Awalan dalam atribut |
strip_import_prefix
|
String; default-nya adalah Jika ditetapkan, file sumber .proto dalam atribut Jika berupa jalur relatif (tidak diawali dengan garis miring), jalur tersebut dianggap sebagai jalur relatif paket. Jika absolut, jalur ini dipahami sebagai jalur relatif repositori. Awalan dalam atribut |