Kurallar
proto_lang_toolchain
Kural kaynağını gösterproto_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 LINK_proto_library kuralının (ör. java_proto_library
) proto derleyiciyi çağırır.
Bazı REQUEST_proto_library kuralları, komut satırı işaretleri kullanarak hangi araç zincirinin kullanılacağını belirtmenize olanak tanır. Bu kuralların belgelerine bakın.
Normalde, Java derleyicinizi ayarlamak istemiyorsanız 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ında bir proto-derleyicinin çağrılmasına ihtiyaç duyar.
LANGUAGE_proto_library adlı derleyicinin kullandığı derleyicinin proto_library
ile aynı olması faydalı olur.
Ö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; gerekli 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/eklentiye özel parçaları dahil edin (ör. -I parametrelerini dahil etmeyin)
|
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 şunlardır: "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österproto_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 dilden kullanılabilecek protokol arabellekleri 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 proto_library
kuralı tarafından doğrudan bahsedilen .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
belgelerine göz atın.
Önerilen kod organizasyonu:
- Her
.proto
dosyası için birproto_library
kuralı. -
foo.proto
adlı dosya, aynı paket içinde yer alanfoo_proto
adlı bir kuralda yer alır. -
foo_proto
adlı birproto_library
öğesini sarmalayan[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 özel kitaplıklara bağlı olmayabilir.
|
srcs
|
Etiket listesi; varsayılan .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 başka proto_library'ye sahip 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 Ayarlandığında bu kuralın
|
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.
|