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.
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 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).
|
mnemonic
|
Dize; varsayılan değer |
output_files
|
Dize; varsayılan değer $(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 --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. 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 birproto_library
kuralı. -
foo.proto
adlı bir dosya, aynı pakette bulunanfoo_proto
adlı bir kuralda yer alacak. -
foo_proto
adlı birproto_library
öğesini sarmalayan bir[language]_proto_library
öğesinefoo_[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 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 .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.
|