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. Blaze'e bir 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 şöyle olabilir:
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 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, kodun oluşturulması için proto-derleyiciye aktarılır. 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) öğesinin, tek bir dosyaya giden bir yolla veya birden fazla dosya varsa çıkış dizinine göre nasıl biçimlendirileceğini kontrol eder.
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. Desteklenen kuralların deps
ifadesinde (ör. java_proto_library
) proto_library
listelenebilir.
proto_library
, komut satırında derlendiğinde foo-descriptor-set.proto.bin
adında bir dosya oluşturur. Bu dosya, kuralın src'si olan mesajlar için tanımlayıcı olarak ayarlanır. Dosya,
https://developers.google.com/protocol-buffers/docs/techniques#self-description sayfasında açıklanan serileştirilmiş bir FileDescriptorSet
dosyasıdır.
Yalnızca bir proto_library
kuralı tarafından doğrudan bahsedilen .proto
dosyaları hakkında bilgi 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:
- Her
.proto
dosyası için birproto_library
kuralı. -
foo.proto
adlı bir dosya, aynı pakette bulunanfoo_proto
adlı bir kuralda yer alır. -
foo_proto
adlı birproto_library
öğesini saran bir[language]_proto_library
,foo_[language]_proto
olarak adlandırılmalı ve aynı paket içinde yer almalıdır.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; gerekli Bu hedef için benzersiz bir ad. |
deps
|
Etiket listesi; varsayılan 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ş bir listedir. srcs işlevinin boş olabileceği kullanım alanlarından biri, 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, ör. kalıcı bir ad altında herkese açık bir API'yi dışa aktarmak için kullanılabilir.
|
allow_exports
|
Etiket; varsayılan değer |
exports
|
Etiket listesi; varsayılan |
import_prefix
|
Dize; varsayılan değer Bu kuralın Bu ön ek eklenmeden önce |
strip_import_prefix
|
Dize; varsayılan değer Ayarlandığında, bu kuralın Göreli bir yolsa (eğik çizgiyle başlamıyorsa) pakete bağlı olarak alınır. Mutlaksa depoya bağlı bir yol olarak kabul edilir.
|