Protokol Arabelleği Kuralları

Kurallar

proto_lang_toolchain

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)

Kullanımdan kaldırıldı. Bunun yerine lütfen https://github.com/bazelbuild/rules_proto adresine gidin.

LANGUAGE_proto_library kuralının (ör. java_proto_library) proto-derleyiciyi çağırır. Bazı LANGUAGE_proto_library kuralları, komut satırı işaretleri kullanılarak hangi araç zincirinin kullanılacağının belirtilmesine izin verir. Bu kuralların dokümanlarına bakın.

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

Derleyici yok. Proto-derleyici, eklediğimiz proto_library kuralından alınır. Bu işaret, Blaze'e 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'ın kullandığı derleyiciyi, proto_library ile aynı derleyiciyi zorunlu kılmak faydalıdır.

Örnekler

Basit bir örnek vermek gerekirse:

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 ile ilişkili srcs özelliğindeki dosyalar için kod oluşturulmaz. Bu işlev, any.proto gibi önceden proto çalışma zamanlarına bağlı .proto dosyaları için kullanılır.
command_line

String; required

Bu değer, kodu oluşturmak için proto derleyiciye iletilecek. Yalnızca bu kod oluşturucuya/eklentiye özel parçaları ekleyin (ör. -I parametrelerini dahil etmeyin)
  • $(OUT), Türkçe_proto_kitaplığa özgüdür. Kuralların, bu değişkeni nasıl yorumlayacaklarını tanımlaması beklenir. Örneğin Java'da $(OUT) öğesi, oluşturulacak src-jar dosya adıyla değiştirilir.
mnemonic

String; optional; default is "GenProto"

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

Label; optional

Sağlanması durumunda, proto derleyiciyi çağıran eylemde kullanıma sunulacak ve proto derleyiciye iletilecektir: --plugin=protoc-gen-PLUGIN=.
plugin_format_flag

String; optional

Sağlanırsa bu değer, eklentiyi kullanmak için proto derleyiciye iletilir. Değer, yürütülebilir 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, protokol işlemine ilişkin ilerleme mesajı olarak ayarlanır.
proto_compiler

Label; optional

Yürütülebilir proto derleyicisi. Sağlanırsa bu hedef, kodu oluşturmak için bir proto derleyici olarak kullanılır.
runtime

Label; optional

Oluşturulan kodun derlendiği dile özgü kitaplık. Tam davranış LANG_proto_library'ye özgüdür. Örneğin Java, çalışma zamanına göre derlemelidir.

proto_library

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ı. Lütfen bunun yerine https://github.com/bazelbuild/rules_proto sayfasını kullanın.

Birden çok dilde kullanılabilecek protokol arabellek kitaplıkları tanımlamak için proto_library kullanın. proto_library, java_proto_library gibi desteklenen kuralların deps yan tümcesinde listelenebilir.

proto_library, komut satırında derlendiğinde foo-descriptor-set.proto.bin adlı bir dosya oluşturur. Bu dosya, kuralın src verdiği mesajlar için ayarlanan tanımlayıcıdır. Dosya, https://developers.google.com/protocol-buffers/docs/techniques#self-description bölümünde açıklanan serileştirilmiş bir FileDescriptorSet dosyasıdır.

Yalnızca doğrudan proto_library kuralı tarafından belirtilen .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 içindeki dokümanlara bakın.

Önerilen kod organizasyonu:

  • .proto dosyası başına 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 [language]_proto_library öğesi, foo_[language]_proto olarak adlandırılmalı ve aynı paket içinde 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 özgü 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 alanının boş bırakılabileceği bir kullanım alanı, takma ad kitaplığıdır. Bu, deps içinde bir veya daha fazla proto_library daha bulunan bir proto_library kuralıdır. Bu kalıp, ör. kalıcı bir ad altındaki herkese açık API'yi dışa aktarmak için kullanılabilir.
exports

List of labels; optional

Proto kaynağında "herkese açık içe aktarma" aracılığıyla referans verilebilen proto_library hedeflerinin listesi.
import_prefix

String; optional

Bu kuralda .proto dosyalarının yollarına eklenecek ön ek.

Bu ayar ayarlandığında, bu kuralın srcs özelliğindeki .proto kaynak dosyalarına bu özelliğin, depoya göre yolunun önüne eklenen değeri ile erişilebilir.

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

strip_import_prefix

String; optional

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

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

Göreli bir yolsa (eğik çizgiyle başlamadıysa) pakete bağlı yol olarak alınır. Mutlak bir ise depoya bağlı yol olarak kabul edilir.

import_prefix özelliğindeki ön ek, bu önek çıkarıldıktan sonra eklenir.