Kurallar
proto_lang_toolchain
Kural kaynağını görüntülemeproto_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.
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 hakkında bilgi edinmek için belgelerine 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.
Birçok özellik için proto_library kuralının kendisinde bir 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 blacklisted_protos öğesinin srcs özelliğindeki dosyalar için kod oluşturulmaz.
Bu, any.proto gibi proto çalışma zamanlarına zaten bağlanmış .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).
|
mnemonic
|
Dize; varsayılan değer |
output_files
|
Dize; varsayılan değer command_line içindeki $(OUT) öğesinin nasıl biçimlendirileceğini kontrol eder. Bu biçimlendirme, tek bir dosyanın yolu veya birden fazla dosya olması durumunda çıkış dizini şeklinde olabilir.
Olası değerler: "single", "multiple".
|
plugin
|
Etiket: Varsayılan değer --plugin=protoc-gen-PLUGIN=<executable>.
|
plugin_format_flag
|
Dize; varsayılan değer --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
Dize; varsayılan değer |
proto_compiler
|
Etiket: Varsayılan değer |
runtime
|
Etiket: Varsayılan değer |
proto_library
Kural kaynağını görüntülemeproto_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. Bir proto_library, java_proto_library gibi desteklenen kuralların deps maddesinde listelenebilir.
Komut satırında derlendiğinde proto_library, kuralın kaynakları olan iletiler için tanımlayıcı kümesi olan foo-descriptor-set.proto.bin adlı bir dosya oluşturur. 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:
-
.protodosyası başına birproto_librarykuralı. -
foo.protoadlı bir dosya, aynı pakette bulunanfoo_protoadlı bir kuralda yer alacak. -
proto_libraryadlı[language]_proto_libraryöğesini sarmalayanfoo_proto,foo_[language]_protoolarak adlandırılmalı ve aynı pakette yer almalı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 proto_library kuralların listesi.
Bir proto_library yalnızca diğer proto_library hedeflerine bağlı olabilir.
Dile özgü kitaplıklara bağlı olmamalıdır.
|
srcs
|
Etiket listesi; varsayılan değer .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 |
exports
|
Etiket listesi; varsayılan değer |
import_prefix
|
Dize; varsayılan değer Ayarlanmışsa bu kuralın Bu ön ek eklenmeden önce |
strip_import_prefix
|
Dize; varsayılan değer Bu kuralın 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.
|