Protokol Arabelleği Kuralları

Sorun bildirin.3 2.02}332}12/}22}18}

Kurallar

proto_lang_toolchain

Kural kaynağını göster
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 LINK_proto_library kuralının (ör. java_proto_library) proto derleyiciyi çağırır. Bazı REQUEST_proto_library kuralları, komut satırı işaretleri kullanarak hangi araç zincirinin kullanılacağını belirtmenize olanak tanır. Bu kuralların belgelerine bakın.

Normalde, Java derleyicinizi ayarlamak istemiyorsanız 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ında bir proto-derleyicinin çağrılmasına ihtiyaç duyar. LANGUAGE_proto_library adlı derleyicinin kullandığı derleyicinin proto_library ile aynı olması faydalı olur.

Ö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; gerekli

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/eklentiye özel parçaları dahil edin (ör. -I parametrelerini dahil etmeyin)
  • $(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ı ile değiştirilir.
mnemonic

Dize; varsayılan değer "GenProto"

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

Dize; varsayılan değer "legacy"

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 şunlardır: "tek", "çoklu".
plugin

Etiket; varsayılan değer None

Sağlanması durumunda, 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ğlanması halinde bu değer, eklentiyi kullanmak için proto-derleyiciye aktarılır. Değer, yürütülebilir eklenti ile 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, 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öster
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 dilden kullanılabilecek protokol arabellekleri 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 proto_library kuralı tarafından doğrudan bahsedilen .proto dosyalarıyla ilgili bilgileri içerir. Geçişli tanımlayıcı kümeleri, [ProtoInfo].transitive_descriptor_sets Starlark sağlayıcısı aracılığıyla toplanabilir. ProtoInfo.java belgelerine göz atın.

Önerilen kod organizasyonu:

  • Her .proto dosyası için bir proto_library kuralı.
  • foo.proto adlı dosya, aynı paket içinde yer alan foo_proto adlı bir kuralda yer alır.
  • foo_proto adlı bir proto_library öğesini sarmalayan [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 özel kitaplıklara bağlı olmayabilir.
srcs

Etiket listesi; varsayılan []

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 başka proto_library'ye sahip 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 "herkese açık içe aktarma" 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 ön ek.

Ayarlandığında bu kuralın srcs özelliğindeki .proto kaynak dosyalarına, bu özelliğin depoya bağlı yollarının başına eklenen değeri üzerinden erişilebilir.

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

strip_import_prefix

Dize; 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ı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.