Protokol Arabelleği Kuralları

Sorun bildir Kaynağı göster Gece · 7,4 , 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ı https://github.com/bazelbuild/rules_proto adresinden yükleyin.

Bir LANG_proto_library kuralının (ör. java_proto_library) proto-derleyiciyi çağırmalıdır. Bazı LANG_proto_library kuralları, komut satırı işaretçileri kullanılarak hangi araç zincirinin kullanılacağını belirtmeye olanak tanır. Bu kuralların belgelerine bakın.

Java derleyicinizi ayarlamak istemiyorsanız genellikle bu tür kurallar yazmamalısınız.

Derleyici yoktur. Proto derleyici, eklediğimiz proto_library kuralından alınır. Bu parametre, Blaze'a komut satırı işareti olarak iletilir. Bazı özellikler, proto_library kuralının kendisinde bir proto-derleyicinin çağrılmasını gerektirir. 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

Etiketler listesi; varsayılan değer []'dir.

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

Dize; zorunlu

Bu değer, kodun oluşturulması için proto-derleyiciye aktarılır. Yalnızca bu kod oluşturucuya/eklentilere özgü kısımları ekleyin (ör. -I parametrelerini eklemeyin)
  • $(OUT), LANG_proto_library'ye özgüdür. Kuralların nasıl yorumladığına dikkat edin. Örneğin, Java için $(OUT) oluşturulacak src-jar dosya adıyla değiştirilir.
mnemonic

Dize; varsayılan değer "GenProto"'tir

Bu değer, prototip işlemindeki anımsatıcı olarak ayarlanır.
output_files

Dize; varsayılan değer "legacy"'tir

command_line içindeki $(OUT) değerinin biçimlendirilme şeklini kontrol eder. Bu değer, tek bir dosyanın yolunu veya birden fazla dosya varsa çıkış dizininin yolunu belirtir. 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

Dize; varsayılan değer ""'tir

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

Dize; varsayılan değer "Generating proto_library %{label}"'tir

Bu değer, protoc işleminde ilerleme mesajı olarak ayarlanır.
proto_compiler

Etiket; varsayılan değer None'dir.

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'dir.

Oluşturulan kodun derlendiği dile özgü bir 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 bunun yerine https://github.com/bazelbuild/rules_proto adresini kullanın.

Protokol arabellekleri kitaplıklarını tanımlamak için proto_library kullanın birden fazla dilde kullanılabilir. Desteklenen kuralların deps yan tümcesinde proto_library (ör. java_proto_library) listelenebilir.

Komut satırında derlendiğinde proto_library, kuralın kaynaklarının bulunduğu iletiler için tanımlanan tanımlayıcı olan foo-descriptor-set.proto.bin adlı bir dosya oluşturur. Dosya, https://developers.google.com/protocol-buffers/docs/techniques#self-description adresinde açıklanan serileştirilmiş bir FileDescriptorSet dosyasıdır.

Yalnızca bir proto_library kuralı tarafından doğrudan bahsedilen .proto dosyaları hakkında bilgi içerir. Geçişli tanımlayıcı kümesi koleksiyonu, [ProtoInfo].transitive_descriptor_sets Starlark sağlayıcısı aracılığıyla kullanılabilir. ProtoInfo.java adresindeki dokümanlara göz atın.

Önerilen kod düzenlemesi:

  • .proto dosyası başına bir proto_library kuralı.
  • foo.proto adlı bir dosya, aynı pakette bulunan foo_proto adlı bir kuralda yer alır.
  • 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 bağlı olduğu diğer proto_library kurallarının listesi. proto_library yalnızca proto_library hedef. Dile özgü kitaplıklara bağlı olmayabilir.
srcs

Etiketler listesi; varsayılan değer []'dir.

Şu dosyayı içeren .proto ve .protodevel dosyalarının listesi: işlendiğinden emin olun. Bu genellikle boş olmayan bir listetir. srcs'nin boş bırakılabileceği bir kullanım alanı da takma ad kitaplığıdır. Bu, proto_library kuralında deps ürününde 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'dir.

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

Etiketler listesi; varsayılan değer []'dir.

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

Bu kuralın srcs özelliğinde ayarlandığında, .proto kaynak dosyalarına bu özelliğin değerinin depoya göre yollarına eklenmesiyle erişilebilir.

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

strip_import_prefix

Dize; varsayılan değer ""'tir

Bu kuraldaki .proto dosyalarının yollarından kaldırılacak ön ek.

Bu ayar etkinleştirildiğinde, bu kuralın srcs özelliğindeki .proto kaynak dosyalarına, bu ön ek kaldırılmış şekilde yollarından erişilebilir.

Göreli bir yolsa (eğik çizgiyle başlamayan) pakete göreli bir yol olarak alınır. Mutlak bir yol ise depoya göreli yol olarak anlaşılır.

import_prefix özelliğindeki ön ek, bu ön ek kaldırıldıktan sonra eklenir.