Protokol Arabellek Kuralları

Sorun bildirin Kaynağı göster

Kurallar

proto_lang_araç zinciri

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, plugin, plugin_format_flag, progress_message, proto_compiler, restricted_to, runtime, tags, target_compatible_with, testonly, visibility)

Bazel kullanıyorsanız kuralı https://github.com/bazelbuild/rules_proto adresinden yükleyin.

Bir LONG_proto_library kuralının (ör. java_proto_library) proto derleyiciyi çağırması gerekir. Bazı boylam_proto_kitaplığı kuralları, komut satırı işaretlerini kullanarak hangi araç zincirinin kullanılacağını belirtmeye olanak tanır. Belgelerini inceleyin.

Normalde Java derleyicinize ayar yapmak istemiyorsanız bu tür kuralları yazmamanız gerekir.

Derleyici yok. Proto-derleyici, ekli proto_library kuralından alınır. Blaze'e komut satırı işareti olarak iletilir. Bazı özellikler proto_library kuralında bir proto derleyicinin çağrılmasını gerektirir. DASH_proto_library'un kullandığı derleyicinin proto_library ile aynı derleyicinin uygulanması 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

Name; required

Bu hedef için benzersiz bir ad.

blacklisted_protos

List of labels; optional

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

String; required

Bu değer, kodun oluşturulması için proto derleyiciye iletilir. Yalnızca bu kod oluşturma aracına/eklentiye özel bölümleri dahil edin (ör. -I parametrelerini dahil etmeyin)
  • $(OUT), LONG_proto_kitaplığa özel. Kuralların bu değişkeni nasıl yorumlayacağını tanımlaması beklenir. Örneğin, Java'da oluşturulan $(OUT) ifadesi, oluşturulacak src-jar dosya adıyla değiştirilecek.
mnemonic

String; optional; default is "GenProto"

Bu değer, protesto işlemi için anı olarak ayarlanır.
plugin

Label; optional

Sağlanırsa proto derleyiciyi çağıran işlem tarafından kullanıma sunulur ve proto derleyiciye iletilir: --plugin=protoc-gen-PLUGIN=.
plugin_format_flag

String; optional

Bu değer, eklentiyi kullanmak için proto derleyiciye iletilir. Bu değer, çalıştırılabilir eklentiyle değiştirilen tek bir %s içermelidir. --plugin=protoc-gen-PLUGIN=.
progress_message

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

Bu değer, protesto işlemi için ilerleme mesajı olarak ayarlanır.
proto_compiler

Label; optional

Proto derleyici yürütülebilir dosyası. Sağlanması durumunda, bu hedef kodu oluşturmak için bir proto-derleyici olarak kullanılır.
runtime

Label; optional

Oluşturulan kodun derlendiği, dile özel bir kitaplık. Söz konusu davranış tam olarak Height_proto_kitaplığa özgüdür. Örneğin Java, çalışma zamanı karşısında derlenmelidir.

proto_kitaplık

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

Birden çok dilde kullanılabilecek protokol arabellek kitaplıklarını tanımlamak için proto_library kullanın. Bir proto_library, desteklenen kurallardaki deps maddesinde (ör. java_proto_library) listelenebilir.

Bir proto_library, komut satırında derlendiğinde foo-descriptor-set.proto.bin adında bir dosya oluşturur. Bu dosya, kural src'sinin mesajları için ayarlanan tanımlayıcıdır. Dosya, https://developers.google.com/protocol-buffers/docs/techniques#self-description konusunda açıklanan serileştirilmiş bir FileDescriptorSet dosyasıdır.

Bu dosya, yalnızca bir proto_library kuralı tarafından doğrudan bahsedilen .proto dosyalarıyla ilgili bilgileri içerir. Geçişli açıklayıcı kümeleri, [ProtoInfo].transitive_descriptor_sets Starlark sağlayıcısı aracılığıyla toplanır. ProtoInfo.java dokümanlarına bakın.

Önerilen kod organizasyonu:

  • Her .proto dosyası için bir proto_library kuralı.
  • foo.proto adlı dosya, aynı pakette bulunan foo_proto adlı bir kuralda olacaktır.
  • foo_proto adlı proto_library adlı öğeyi sarmalayan bir [language]_proto_library, foo_[language]_proto olarak adlandırılmalı ve aynı pakette 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 bağlı olduğu diğer proto_library kurallarının listesi. proto_library yalnızca diğer proto_library hedeflerine bağlı olabilir. Dile özel kitaplıklara bağlı olmayabilir.
srcs

List of labels; optional

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 şeklindedir. Bu, deps içinde bir veya daha fazla proto_kitaplık bulunan bir proto_kitaplık 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.
exports

List of labels; optional

Proto kaynağında "herkese açık içe aktarma" yoluyla referans verilebilen proto_kitaplık hedeflerinin listesi.
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ına erişilebilir. Bu özellik, depoya bağlı yolunun başına eklenen değerdir.

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

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ına, ön eki kesilerek yolu erişilebilir.

Göreli bir yolsa (eğik çizgiyle başlamazsa) pakete bağlı bir yol olarak kabul edilir. Mutlak bir değerse kod deposuna bağlı bir yol olarak anlaşılır.

import_prefix özelliğindeki önek çıkarıldıktan sonra eklenir.