Kurallar
proto_library
Kural kaynağını görüntüleproto_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, toolchains, visibility)
Bazel kullanıyorsanız lütfen kuralı adresinden yükleyin. https://github.com/bazelbuild/rules_proto.
Protokol arabelleklerinin kitaplıklarını tanımlamak için proto_library
kullanın.
birden fazla dilden kullanılabilir. proto_library
listede olabilir
desteklenen kuralların deps
deyiminde, örneğin
java_proto_library
.
proto_library
komutu, komut satırında derlendiğinde bir dosya oluşturur
olan foo-descriptor-set.proto.bin
adlı bir tanımlayıcıdır ve
kuralının src'leri ilettiği iletiler. Dosya serileştirilmiş
FileDescriptorSet
, bu konuyla ilgili olarak şurada açıklanmıştır:
https://developers.google.com/protocol-buffers/docs/techniques#self-description.
Yalnızca doğrudan .proto
dosyalarıyla ilgili bilgileri içerir
bir proto_library
kuralında belirtilenler; geçişli öğeler toplamı
açıklayıcı kümeleri,
[ProtoInfo].transitive_descriptor_sets
Starlark sağlayıcısı.
proto_info.bzl
belgelerine göz atın.
Önerilen kod organizasyonu:
- Her
.proto
dosyası için birproto_library
kuralı. foo.proto
adlı bir dosya,foo_proto
adlı bir kuralda yer alır. aynı pakette bulunur.proto_library
öğesini sarmalayan bir[language]_proto_library
foo_proto
adlı kişifoo_[language]_proto
olarak adlandırılmalıdır. 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.
proto_library , yalnızca diğer proto_library ile ilişkili olabilir
belirler. Dile özel kitaplıklara bağlı olmayabilir.
|
srcs
|
Etiket listesi; varsayılan değer .proto ve .protodevel dosyalarının listesi:
işlenerek hedefin oluşturulması. Bu genellikle boş bir listedir. Bir kullanım alanı
Burada srcs boş bir takma ad-kitaplığı olabilir. Bu,
proto_library kuralında deps içinde bir veya daha fazla başka proto_library bulunuyor.
Bu kalıp, ör. herkese açık API'yi kalıcı bir adla dışa aktarma.
|
allow_exports
|
Etiket; varsayılan değer |
exports
|
Etiket listesi; varsayılan değer |
import_prefix
|
String; varsayılan değer Ayarlandığında, bu kuralın
|
strip_import_prefix
|
String; 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 bir. Mutlaksa depoya bağlı bir yol olarak kabul edilir.
|
proto_lang_toolchain
Kural kaynağını görüntüleproto_lang_toolchain(name, allowlist_different_package, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, mnemonic, output_files, plugin, plugin_format_flag, progress_message, protoc_minimal_do_not_use, restricted_to, runtime, tags, target_compatible_with, testonly, toolchain_type, toolchains, visibility)
Bazel kullanıyorsanız lütfen kuralı adresinden yükleyin. https://github.com/bazelbuild/rules_proto.
Bir LINK_proto_library kuralının (ör. java_proto_library
),
proto-derleyicidir.
Bazı LANGUAGE_proto_library kuralları, komut satırı işaretleri kullanarak hangi araç zincirinin kullanılacağını belirtmenize olanak tanır.
onların belgelerine bakın.
Normalde bu tür kuralları siz istemeden Java derleyicinizi ayarlayın.
Derleyici yoktur. Proto derleyici, eklediğimiz proto_library kuralından alınır. Evet
Blaze'e komut satırı işareti olarak aktarılır.
Bazı özellikler, proto_library kuralında bir proto-derleyicinin çağrılmasına ihtiyaç duyar.
LANGUAGE_proto_library adlı derleyicinin kullandığı derleyicinin derleyiciyle aynı olması faydalı olur
proto_library
kullanıyor.
Ö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. |
allowlist_different_package
|
Etiket; varsayılan değer |
blacklisted_protos
|
Etiket listesi; varsayılan değer srcs özelliğindeki dosyalar için kod oluşturulmaz:
blacklisted_protos .
Bu, zaten şunun gibi proto çalışma zamanlarına bağlı .proto dosyaları için kullanılır:
any.proto
|
command_line
|
String; zorunlu Bu değer, kodun oluşturulması için proto-derleyiciye aktarılır. Yalnızca bazı kısımları eklemek bu kod oluşturucuya/eklentiye özel (ör. -I parametrelerini dahil etmeyin)
|
mnemonic
|
String; varsayılan değer |
output_files
|
String; varsayılan değer command_line içinde $(OUT) öğesinin
tek bir dosyaya veya birden fazla dosya varsa çıkış dizinine giden bir yol.
Olası değerler şunlardır: "tek", "çoklu".
|
plugin
|
Etiket; varsayılan değer --plugin=protoc-gen-PLUGIN=<executable>. .
|
plugin_format_flag
|
String; varsayılan değer --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
String; varsayılan değer |
protoc_minimal_do_not_use
|
Etiket; varsayılan değer |
runtime
|
Etiket; varsayılan değer |
toolchain_type
|
Etiket; varsayılan değer |