Protokol Arabelleği Kuralları

. Sorun bildir Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Kurallar

proto_library

Kural kaynağını görüntüle
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, toolchains, visibility)

Bazel kullanıyorsanız lütfen kuralı adresinden yükleyin. https://github.com/bazelbuild/rules_proto.

Protokol arabelleklerinin kitaplıklarını tanımlamak için proto_library kullanın. birden fazla dilden kullanılabilir. proto_library listede olabilir desteklenen kuralların deps deyiminde, örneğin java_proto_library.

proto_library komutu, komut satırında derlendiğinde bir dosya oluşturur olan foo-descriptor-set.proto.bin adlı bir tanımlayıcıdır ve kuralının src'leri ilettiği iletiler. Dosya serileştirilmiş FileDescriptorSet, bu konuyla ilgili olarak şurada açıklanmıştır: https://developers.google.com/protocol-buffers/docs/techniques#self-description.

Yalnızca doğrudan .proto dosyalarıyla ilgili bilgileri içerir bir proto_library kuralında belirtilenler; geçişli öğeler toplamı açıklayıcı kümeleri, [ProtoInfo].transitive_descriptor_sets Starlark sağlayıcısı. proto_info.bzl belgelerine göz atın.

Önerilen kod organizasyonu:

  • Her .proto dosyası için bir proto_library kuralı.
  • foo.proto adlı bir dosya, foo_proto adlı bir kuralda yer alır. aynı pakette bulunur.
  • proto_library öğesini sarmalayan bir [language]_proto_library foo_proto adlı kişi foo_[language]_proto olarak adlandırılmalıdır. ve aynı pakette bulunmalıdır.

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiket listesi; varsayılan değer []

Hedefin temel aldığı diğer proto_library kurallarının listesi. proto_library, yalnızca diğer proto_library ile ilişkili olabilir belirler. Dile özel kitaplıklara bağlı olmayabilir.
srcs

Etiket listesi; varsayılan değer []

Şu dosyayı içeren .proto ve .protodevel dosyalarının listesi: işlenerek hedefin oluşturulması. Bu genellikle boş bir listedir. Bir kullanım alanı Burada srcs boş bir takma ad-kitaplığı olabilir. Bu, proto_library kuralında deps içinde bir veya daha fazla başka proto_library bulunuyor. Bu kalıp, ör. herkese açık API'yi kalıcı bir adla dışa aktarma.
allow_exports

Etiket; varsayılan değer None

Proto kitaplığının yeniden dışa aktarılmasını veya lang_proto_library kitaplığını listelenen paketlerden birinde değil.
exports

Etiket listesi; varsayılan değer []

"Herkese açık içe aktarma" aracılığıyla başvurulabilecek proto_library hedeflerinin listesi proto kaynağı. "Herkese açık içe aktar"ı kullanıyorsanız bu bir hatadır ancak ilgili kitaplığı listelemeyin dışa aktarma özelliği için de kullanılabilir. Tüm dosyalar listeye eklenmediğinden, kitaplığı hem depolama hem de dışa aktarma işlemlerinde listelediğinizi unutmayın. lang_proto_library uygulamaları henüz değiştirildi.
import_prefix

String; varsayılan değer ""

Bu kuraldaki .proto dosyalarının yollarına eklenecek ön ek.

Ayarlandığında, bu kuralın srcs özelliğindeki .proto kaynak dosyaları şu şekilde olur: erişilebilirliği, bu özelliğin kod deposuna göre yolunun başına eklenen değeridir.

strip_import_prefix özelliğindeki ön ek bu değerden önce kaldırıldı öneki eklendi.

strip_import_prefix

String; varsayılan değer "/"

Bu kuraldaki .proto dosyalarının yollarından çıkarılacak ön ek.

Ayarlandığında, bu kuralın srcs özelliğindeki .proto kaynak dosyaları kendi yollarında erişilebilir.

Göreli bir yolsa (eğik çizgiyle başlamıyorsa) pakete bağlı olarak alınır bir. Mutlaksa depoya bağlı bir yol olarak kabul edilir.

import_prefix özelliğindeki ön ek, şu ön ekten sonra eklenir: soyutlanır.

proto_lang_toolchain

Kural kaynağını görüntüle
proto_lang_toolchain(name, allowlist_different_package, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, mnemonic, output_files, plugin, plugin_format_flag, progress_message, protoc_minimal_do_not_use, restricted_to, runtime, tags, target_compatible_with, testonly, toolchain_type, toolchains, visibility)

Bazel kullanıyorsanız lütfen kuralı adresinden yükleyin. https://github.com/bazelbuild/rules_proto.

Bir LINK_proto_library kuralının (ör. java_proto_library), proto-derleyicidir. Bazı LANGUAGE_proto_library kuralları, komut satırı işaretleri kullanarak hangi araç zincirinin kullanılacağını belirtmenize olanak tanır. onların belgelerine bakın.

Normalde bu tür kuralları siz istemeden Java derleyicinizi ayarlayın.

Derleyici yoktur. Proto derleyici, eklediğimiz proto_library kuralından alınır. Evet Blaze'e komut satırı işareti olarak aktarılır. Bazı özellikler, proto_library kuralında bir proto-derleyicinin çağrılmasına ihtiyaç duyar. LANGUAGE_proto_library adlı derleyicinin kullandığı derleyicinin derleyiciyle aynı olması faydalı olur proto_library kullanıyor.

Örnekler

Basit bir örnek şöyle olabilir:


proto_lang_toolchain(
    name = "javalite_toolchain",
    command_line = "--javalite_out=shared,immutable:$(OUT)",
    plugin = ":javalite_plugin",
    runtime = ":protobuf_lite",
)

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

allowlist_different_package

Etiket; varsayılan değer None

blacklisted_protos

Etiket listesi; varsayılan değer []

Şu öğenin srcs özelliğindeki dosyalar için kod oluşturulmaz: blacklisted_protos. Bu, zaten şunun gibi proto çalışma zamanlarına bağlı .proto dosyaları için kullanılır: any.proto
command_line

String; zorunlu

Bu değer, kodun oluşturulması için proto-derleyiciye aktarılır. Yalnızca bazı kısımları eklemek bu kod oluşturucuya/eklentiye özel (ör. -I parametrelerini dahil etmeyin)
  • $(OUT), LANGUAGE_proto_library'a özgüdür. Kuralların, bir projeyi nasıl yorumladığına dikkat edin. Örneğin, Java için $(OUT) değeri src-jar dosya adını yazın.
mnemonic

String; varsayılan değer "GenProto"

Bu değer, prototip işlemindeki hatırlatma olarak ayarlanır.
output_files

String; varsayılan değer "legacy"

command_line içinde $(OUT) öğesinin tek bir dosyaya veya birden fazla dosya varsa çıkış dizinine giden bir yol. Olası değerler şunlardır: "tek", "çoklu".
plugin

Etiket; varsayılan değer None

Sağlanması durumunda, proto derleyiciyi çağıran işlem için kullanılabilir hale gelir ve proto derleyiciye aktarılır: --plugin=protoc-gen-PLUGIN=<executable>..
plugin_format_flag

String; varsayılan değer ""

Sağlanması halinde bu değer, eklentiyi kullanmak için proto-derleyiciye aktarılır. Değer, yürütülebilir eklenti ile değiştirilmiş tek bir %s içermelidir. --plugin=protoc-gen-PLUGIN=<executable>.
progress_message

String; varsayılan değer "Generating proto_library %{label}"

Bu değer prototip işlemindeki ilerleme mesajı olarak ayarlanır.
protoc_minimal_do_not_use

Etiket; varsayılan değer None

runtime

Etiket; varsayılan değer None

Oluşturulan kodun derlendiği dile özgü kitaplık. Tam davranış LANGUAGE_proto_library'ye özgüdür. Örneğin Java, çalışma zamanına göre derleme yapmalıdır.
toolchain_type

Etiket; varsayılan değer None