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şaretçileri kullanılarak hangi araç zincirinin kullanılacağını belirtmeye olanak tanır. Bu kuralların belgelerine bakın.
Java derleyicinizi ayarlamak istemiyorsanız genellikle bu tür kurallar yazmamalısınız.
Derleyici yoktur. Proto derleyici, eklediğimiz proto_library kuralından alınır. Bu parametre, Blaze'a komut satırı işareti olarak iletilir.
Bazı özellikler, proto_library kuralının kendisinde bir proto-derleyicinin çağrılmasını gerektirir.
LANG_proto_library tarafından kullanılan derleyicinin, proto_library
tarafından kullanılan derleyiciyle aynı olmasını zorunlu kılmak faydalıdır.
Örnekler
Basit bir örnek verelim:
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
|
Etiketler 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ğlı 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/eklentilere ö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) değerinin biçimlendirilme şeklini kontrol eder. Bu değer, tek bir dosyanın yolunu veya birden fazla dosya varsa çıkış dizininin yolunu belirtir.
Olası değerler: "tek", "çoklu".
|
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ı. Bunun yerine lütfen https://github.com/bazelbuild/rules_proto adresini kullanın.
Birden fazla dilde kullanılabilecek protokol arabellek kitaplıklarını tanımlamak için proto_library
kullanın. proto_library
, desteklenen kuralların deps
yan tümcesinde java_proto_library
gibi bir değer olarak listelenebilir.
Komut satırında derlendiğinde proto_library
, kural kaynaklarının iletileri için belirlenen tanımlayıcı olan foo-descriptor-set.proto.bin
adlı bir dosya oluşturur. Dosya,
https://developers.google.com/protocol-buffers/docs/techniques#self-description adresinde açıklanan serileştirilmiş bir FileDescriptorSet
dosyasıdır.
Yalnızca bir proto_library
kuralı tarafından doğrudan bahsedilen .proto
dosyalarıyla ilgili bilgileri içerir; geçişli tanımlayıcı kümesi koleksiyonu [ProtoInfo].transitive_descriptor_sets
Starlark sağlayıcısı aracılığıyla kullanılabilir.
ProtoInfo.java
adresindeki dokümanlara göz atın.
Önerilen kod düzenlemesi:
-
.proto
dosyası başına birproto_library
kuralı. -
foo.proto
adlı bir dosya, aynı pakette bulunanfoo_proto
adlı bir kuralda yer alır. -
foo_proto
adlı birproto_library
'yi sarmalayan[language]_proto_library
,foo_[language]_proto
olarak adlandırılmalı ve aynı pakette bulunmalıdır.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
deps
|
Etiketler 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
|
Etiketler listesi; varsayılan değer .proto ve .protodevel dosyalarının listesi. Bu genellikle boş olmayan bir listetir. srcs 'nin boş bırakılabileceği bir kullanım alanı da takma ad kitaplığıdır. Bu, deps içinde bir veya daha fazla proto_library içeren 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
|
Etiketler listesi; varsayılan değer |
import_prefix
|
Dize; varsayılan değer Bu özellik ayarlandığında, bu kuralın Bu ön ek eklenmeden önce |
strip_import_prefix
|
Dize; varsayılan değer Bu ayar etkinleştirildiğinde, bu kuralın Göreli bir yolsa (eğik çizgiyle başlamayan) pakete göreli bir yol olarak alınır. Mutlak bir yol ise depoya göreli yol olarak anlaşılır.
|