Protokol Arabelleği Kuralları

Kurallar

proto_lang_toolchain

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)

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

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

Name; required

Bu hedef için benzersiz bir ad.

blacklisted_protos

List of labels; optional

Ş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; required

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; optional; default is "GenProto"

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

String; optional; default is "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

Label; optional

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=..
plugin_format_flag

String; optional

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=.
progress_message

String; optional; default is "Generating proto_library %{label}"

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

Label; optional

Yürütülebilir proto derleyici. Sağlanırsa bu hedef, kodu oluşturmak için proto derleyici olarak kullanılır.
runtime

Label; optional

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

proto_library(name, deps, srcs, data, 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

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

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

List of labels; optional

Ş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.
exports

List of labels; optional

"Herkese açık içe aktarma" aracılığıyla başvurulabilecek proto_library hedeflerinin listesi protondaki kaynak.
import_prefix

String; optional

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; optional

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.