Protokol Arabelleği Kuralları

Sorun bildir Kaynağı görüntüle Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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şaretlerini kullanarak hangi araç zincirinin kullanılacağını belirtmeye olanak tanır. Bu kurallar için dokümanlarına bakın.

Java derleyicinizi ayarlamak istemediğiniz sürece normalde bu tür kurallar yazmamalısınız.

Derleyici yoktur. Proto derleyici, bağladığımız proto_library kuralından alınır. Blaze'e komut satırı işareti olarak iletilir. Bazı özellikler için proto_library kuralında proto derleyicinin çağrılması gerekir. LANG_proto_library'nin kullandığı derleyicinin proto_library ile aynı olmasını zorunlu kılmak faydalıdır.

Örnekler

Basit bir örnek:

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

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

Dize; zorunlu

Bu değer, kodu oluşturmak için proto derleyiciye iletilir. Yalnızca bu kod oluşturucuya/eklentiye özgü kısımları ekleyin (ör. -I parametrelerini eklemeyin).
  • $(OUT), LANG_proto_library'ye özgüdür. Kuralların bu değişkeni nasıl yorumladıklarını tanımlamaları beklenir. Örneğin Java'da $(OUT) yerine oluşturulacak src-jar dosya adı kullanılır.
mnemonic

Dize; varsayılan değer "GenProto"

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

Dize; varsayılan değer "legacy"

$(OUT) içindeki command_line öğesinin nasıl biçimlendirileceğini kontrol eder. Bu, tek bir dosyanın yolu veya birden fazla dosya olması durumunda çıkış dizini olabilir. Olası değerler: "single", "multiple".
plugin

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

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

Dize; varsayılan değer ""

Sağlanırsa bu değer, eklentiyi kullanmak 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'dir.

Proto derleyici yürütülebilir dosyası. 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 özgüdür. Örneğin Java, çalışma zamanına göre 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ı. Lütfen bunun yerine https://github.com/bazelbuild/rules_proto adresini kullanın.

Birden fazla dilde kullanılabilecek protokol arabellekleri kitaplıklarını tanımlamak için proto_library kullanın. proto_library, java_proto_library gibi desteklenen kuralların deps maddesinde listelenebilir.

Komut satırında derlendiğinde proto_library, foo-descriptor-set.proto.bin adlı bir dosya oluşturur. Bu dosya, kural kaynaklarının iletileri için tanımlayıcı kümesidir. Dosya, FileDescriptorSet olarak serileştirilmiştir. Bu, https://developers.google.com/protocol-buffers/docs/techniques#self-description adresinde açıklanmıştır.

Yalnızca bir .proto kuralı tarafından doğrudan belirtilen proto_library dosyalarıyla ilgili bilgileri içerir. Geçişli tanımlayıcı kümelerinin toplanması [ProtoInfo].transitive_descriptor_sets Starlark sağlayıcısı aracılığıyla kullanılabilir. ProtoInfo.java adresindeki belgelere göz atın.

Önerilen kod düzeni:

  • .proto dosyası başına bir proto_library kuralı.
  • foo.proto adlı bir dosya, aynı pakette bulunan foo_proto adlı bir kuralda yer alacak.
  • foo_proto adlı bir proto_library öğesini sarmalayan bir [language]_proto_library öğesine foo_[language]_proto adı verilmelidir 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 []'dir.

Hedefin bağlı olduğu 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

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

Hedefi oluşturmak için işlenen .proto ve .protodevel dosyalarının listesi. Bu genellikle boş olmayan bir listedir. srcs öğesinin boş olabileceği bir kullanım alanı alias-library'dir. Bu, deps içinde bir veya daha fazla başka proto_library bulunan bir proto_library kuralıdır. Bu kalıp, örneğin herkese açık bir API'yi kalıcı bir ad altında dışa aktarmak için kullanılabilir.
allow_exports

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

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

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

Proto kaynağında "import public" aracılığıyla referans verilebilecek proto_library hedeflerinin listesi.
import_prefix

Dize; varsayılan değer ""

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

Ayarlanmışsa bu kuralın srcs özelliğindeki .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 ""

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

Bu kuralın srcs özelliğinde ayarlandığında, .proto kaynak dosyalarına bu ön ek kesilmiş şekilde yollarından erişilebilir.

Göreceli bir yolsa (eğik çizgiyle başlamıyorsa) paketle ilgili bir yol olarak kabul edilir. 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.