Protokol Arabelleği Kuralları

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

Kurallar

proto_lang_toolchain

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

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.

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.
proto_compiler

Etiket; varsayılan değer None

Yürütülebilir proto derleyici. Sağlanırsa bu hedef, kodu oluşturmak için proto derleyici olarak kullanılır.
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.

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, visibility)

Kullanımdan kaldırıldı. Lütfen şunu kullanın: https://github.com/bazelbuild/rules_proto adresini ziyaret edin.

Protokol arabellekleri kitaplıklarını tanımlamak için proto_library kullanın birden fazla dilde kullanılabilir. proto_library listede olabilir java_proto_library gibi desteklenen kuralların deps deyimi içinde kullanılabilir.

proto_library komutu, komut satırında derlendiğinde foo-descriptor-set.proto.bin, mesajı, src'lere gönderilir. Dosya, seri hâlindeki (FileDescriptorSet) şurada açıklandığı: https://developers.google.com/protocol-buffers/docs/techniques#self-description.

Yalnızca bir.proto proto_library kural; geçişli tanımlayıcı kümeleri koleksiyonu, [ProtoInfo].transitive_descriptor_sets Starlark sağlayıcısı. ProtoInfo.java belgelerine göz atın.

Önerilen kod organizasyonu:

  • Her .proto dosyası için bir proto_library kuralı.
  • foo.proto adlı dosya, foo_proto adlı bir kuralda yer alır. Bu kural aynı pakette bulunuyor.
  • proto_library adlı bir etiketi sarmalayan [language]_proto_library foo_proto şöyle çağrılmalıdır: foo_[language]_proto ve aynı paket içinde 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 proto_library hedef. 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 protondaki kaynak.
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.