Aturan Buffering Protokol

{3/2.0.20.2. Laporkan masalah Lihat sumber

Aturan

proto_lang_toolchain

Lihat sumber aturan
proto_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, harap muat aturan dari https://github.com/bazelbuild/rules_proto.

Menentukan bagaimana aturan LANG_proto_library (mis., java_proto_library) harus memanggil proto-compiler. Beberapa aturan LANG_proto_library mengizinkan penentuan toolchain yang akan digunakan menggunakan flag 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 kami lampirkan. Instance ini diteruskan sebagai flag command line ke Blaze. Beberapa fitur mengharuskan proto-compiler dipanggil 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 diisi

Nama unik untuk target ini.

blacklisted_protos

Daftar label; defaultnya adalah []

Tidak ada kode yang akan dibuat untuk file dalam atribut srcs dari blacklisted_protos. File ini digunakan untuk file .proto yang sudah ditautkan ke runtime proto, seperti any.proto.
command_line

String; wajib diisi

Nilai ini akan diteruskan ke proto-compiler untuk membuat kode. Hanya sertakan bagian khusus untuk pembuat kode/plugin ini (misalnya, jangan sertakan parameter -I)
  • $(OUT) adalah khusus LANG_proto_library. Aturan diharapkan menentukan cara menafsirkan variabel ini. Untuk Java, misalnya, $(OUT) akan diganti dengan nama file src-jar yang akan dibuat.
mnemonic

String; defaultnya adalah "GenProto"

Nilai ini akan ditetapkan sebagai mnemonik tindakan prototipe.
output_files

String; defaultnya adalah "legacy"

Mengontrol cara pemformatan $(OUT) dalam command_line, baik dengan jalur ke satu file atau direktori output jika ada beberapa file. Nilai yang mungkin adalah: "single", "multiple".
plugin

Label; defaultnya adalah None

Jika disediakan, akan disediakan untuk tindakan yang memanggil proto-compiler, dan akan diteruskan ke proto-compiler: --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

String; defaultnya adalah ""

Jika disediakan, nilai ini akan diteruskan ke proto-compiler untuk menggunakan plugin. Nilai ini harus berisi satu %s yang telah diganti dengan plugin yang dapat dieksekusi. --plugin=protoc-gen-PLUGIN=<executable>.
progress_message

String; defaultnya adalah "Generating proto_library %{label}"

Nilai ini akan ditetapkan sebagai pesan progres pada tindakan prototipe.
proto_compiler

Label; defaultnya adalah None

Compiler proto yang dapat dieksekusi. Jika disediakan, target ini akan digunakan sebagai compiler proto untuk membuat kode.
runtime

Label; defaultnya adalah None

Library khusus bahasa tempat kode yang dihasilkan dikompilasi. Perilaku yang tepat adalah khusus LANG_proto_library. Java, misalnya, harus dikompilasi terhadap runtime.

proto_library

Lihat sumber aturan
proto_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. Gunakan https://github.com/bazelbuild/rules_proto sebagai gantinya.

Gunakan proto_library untuk menentukan library buffering protokol yang dapat digunakan dari beberapa bahasa. proto_library dapat dicantumkan dalam klausa deps aturan yang didukung, seperti java_proto_library.

Jika dikompilasi pada command line, proto_library akan membuat file bernama foo-descriptor-set.proto.bin, yang merupakan kumpulan deskriptor untuk pesan aturan srcs. File ini adalah FileDescriptorSet serial, yang dijelaskan dalam https://developers.google.com/protocol-buffers/docs/techniques#self-description.

File ini hanya berisi informasi tentang file .proto yang disebutkan secara langsung oleh aturan proto_library; kumpulan kumpulan deskripsi transitif tersedia melalui penyedia Starlark [ProtoInfo].transitive_descriptor_sets. Lihat dokumentasi di ProtoInfo.java.

Pengaturan kode yang direkomendasikan:

  • Satu aturan proto_library per .proto file.
  • File bernama foo.proto akan berada dalam aturan bernama foo_proto, yang terletak dalam paket yang sama.
  • [language]_proto_library yang menggabungkan proto_library bernama foo_proto harus disebut foo_[language]_proto, dan berada dalam paket yang sama.

Argumen

Atribut
name

Nama; wajib diisi

Nama unik untuk target ini.

deps

Daftar label; defaultnya adalah []

Daftar aturan proto_library lain yang diandalkan target. proto_library mungkin hanya bergantung pada target proto_library lainnya. Ini mungkin tidak bergantung pada library bahasa tertentu.
srcs

Daftar label; defaultnya adalah []

Daftar file .proto dan .protodevel yang diproses untuk membuat target. Daftar ini biasanya tidak kosong. Satu kasus penggunaan saat srcs dapat dikosongkan adalah library-alias. Ini adalah aturan proto_library yang memiliki satu atau beberapa proto_library lain di deps. Pola ini dapat digunakan, misalnya, mengekspor api publik dengan nama persisten.
allow_exports

Label; defaultnya adalah None

Daftar yang diizinkan opsional yang mencegah library proto diekspor ulang atau digunakan di lang_proto_library yang tidak ada dalam salah satu paket yang tercantum.
exports

Daftar label; defaultnya adalah []

Daftar target proto_library yang dapat direferensikan melalui "impor publik" dalam sumber proto.
import_prefix

String; defaultnya adalah ""

Awalan yang akan ditambahkan ke jalur file .proto dalam aturan ini.

Jika ditetapkan, file sumber .proto dalam atribut srcs dari aturan ini dapat diakses adalah nilai atribut ini yang ditambahkan ke jalur relatif repositorinya.

Awalan dalam atribut strip_import_prefix dihapus sebelum awalan ini ditambahkan.

strip_import_prefix

String; defaultnya adalah ""

Awalan yang akan dihapus dari jalur file .proto dalam aturan ini.

Jika ditetapkan, file sumber .proto dalam atribut srcs pada aturan ini dapat diakses di jalurnya dengan awalan ini.

Jika jalur relatif (tidak dimulai dengan garis miring), jalur akan diambil sebagai jalur relatif paket. Jika nilainya absolut, nilainya akan dipahami sebagai jalur relatif repositori.

Awalan dalam atribut import_prefix ditambahkan setelah awalan ini dihapus.