Protokol Arabelleği Kuralları

7.3 · 7.2 · 7.1 · 7.0 · 6.5

Kurallar

proto_lang_toolchain

Kural kaynağını görüntüleme
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. Blaze'e bir komut satırı işareti olarak iletilir. Bazı özellikler, proto_library kuralının kendisinde bir proto-derleyicinin çağrılmasını gerektirir. LANG_proto_library tarafından kullanılan derleyicinin, proto_library tarafından kullanılan derleyiciyle aynı olmasını zorunlu kılmak faydalıdır.

Ö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 []

blacklisted_protos öğesinin srcs özelliğindeki dosyalar için kod oluşturulmaz. Bu, any.proto gibi proto çalışma zamanlarına zaten bağlı olan .proto dosyaları için kullanılır.
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), LANGUAGE_proto_library'a özgüdür. Kuralların, bu değişkeni nasıl yorumlayacağını tanımlaması beklenir. Örneğin, Java için $(OUT) oluşturulacak src-jar dosya adıyla değiştirilir.
mnemonic

Dize; varsayılan değer "GenProto"

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) öğesinin, tek bir dosyaya giden bir yolla veya birden fazla dosya varsa çıkış dizinine göre nasıl biçimlendirileceğini kontrol eder. Olası değerler: "tek", "çoklu".
plugin

Etiket; varsayılan değer None

Sağlandığı takdirde, proto derleyiciyi çağıran işleme sunulur ve proto derleyiciye iletilir: --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

Dize; varsayılan değer ""

Bu değer sağlanırsa eklentinin kullanılması için proto-derleyiciye iletilir. Değer, eklenti yürütülebilir dosyasıyla değiştirilen tek bir %s içermelidir. --plugin=protoc-gen-PLUGIN=<executable>.
progress_message

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

Bu değer, protoc işleminde 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'dir.

Oluşturulan kodun derlendiği dile özgü bir kitaplık. Tam davranış, LANG_proto_library'ye özeldir. Örneğin, Java çalışma zamanında derlenmelidir.

proto_library

Kural kaynağını görüntüleme
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ı. Bunun yerine lütfen https://github.com/bazelbuild/rules_proto adresini kullanın.

Birden fazla dilde kullanılabilecek protokol arabellek kitaplıklarını tanımlamak için proto_library kullanın. Desteklenen kuralların deps ifadesinde (ör. java_proto_library) proto_library listelenebilir.

proto_library, komut satırında derlendiğinde foo-descriptor-set.proto.bin adında bir dosya oluşturur. Bu dosya, kuralın src'si olan mesajlar için tanımlayıcı olarak ayarlanır. Dosya, https://developers.google.com/protocol-buffers/docs/techniques#self-description sayfasında 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:

  • Her .proto dosyası için bir proto_library kuralı.
  • foo.proto adlı bir dosya, aynı pakette bulunan foo_proto adlı bir kuralda yer alır.
  • foo_proto adlı bir proto_library öğesini saran bir [language]_proto_library, foo_[language]_proto olarak adlandırılmalı ve aynı paket içinde yer almalıdır.

Bağımsız değişkenler

Özellikler
name

Ad; gerekli

Bu hedef için benzersiz bir ad.

deps

Etiket listesi; varsayılan []

Hedefin temel aldığı diğer proto_library kurallarının listesi. Bir proto_library yalnızca diğer proto_library hedeflerine bağlı olabilir. Dile özgü kitaplıklara bağlı olmayabilir.
srcs

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

Hedefi oluşturmak için işlenen .proto ve .protodevel dosyalarının listesi. Bu genellikle boş bir listedir. srcs işlevinin boş olabileceği kullanım alanlarından biri, takma ad kitaplığıdır. Bu, deps içinde bir veya daha fazla proto_library içeren bir proto_library kuralıdır. Bu kalıp, ör. kalıcı bir ad altında herkese açık bir API'yi dışa aktarmak için kullanılabilir.
allow_exports

Etiket; varsayılan değer None

Proto kitaplığının yeniden dışa aktarılmasını veya listelenen paketlerden birinde bulunmayan lang_proto_library'de kullanılmasını engelleyen isteğe bağlı bir izin verilenler listesi.
exports

Etiket listesi; varsayılan []

Proto kaynağında "ortak içe aktarma" aracılığıyla başvurulabilecek proto_library hedeflerinin listesi.
import_prefix

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

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.

Bu ön ek eklenmeden önce strip_import_prefix özelliğindeki ön ek kaldırılır.

strip_import_prefix

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

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

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

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

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