नियम
proto_lang_toolchain
नियम का सोर्स देखेंproto_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)
यदि Basel का उपयोग किया जा रहा है, तो कृपया से नियम लोड करें https://github.com/bazelbuild/rules_proto.
बताता है कि lang_proto_library नियम कैसे सेट करता है (उदाहरण के लिए, java_proto_library
) को
प्रोटो-कंपाइलर.
कुछ lang_proto_library नियम यह तय करने की अनुमति देते हैं कि कमांड लाइन फ़्लैग का इस्तेमाल करके किस टूलचेन का इस्तेमाल किया जाए;
उनके दस्तावेज़ देखें.
आम तौर पर, आपको ऐसे नियम तब तक नहीं लिखने चाहिए, जब तक कि आप अपने Java कंपाइलर को ट्यून करें.
कोई कंपाइलर नहीं है. प्रोटो-कंपाइलर, उस proto_library नियम से लिया जाता है जिससे हम जुड़े हुए होते हैं. हां
Blaze को कमांड-लाइन फ़्लैग के तौर पर भेजा गया था.
कई सुविधाओं का इस्तेमाल करने के लिए, Proto_library नियम पर ही किसी प्रोटो-कंपाइलर को शुरू करना ज़रूरी है.
कंपाइलर को लागू करना फ़ायदेमंद होता है, क्योंकि प्रोग्राम_proto_library उसी तरह से इस्तेमाल करता है जैसा पहले इस्तेमाल किया जाता है
proto_library
करता है.
उदाहरण
इसका एक सरल उदाहरण यह होगा:
proto_lang_toolchain( name = "javalite_toolchain", command_line = "--javalite_out=shared,immutable:$(OUT)", plugin = ":javalite_plugin", runtime = ":protobuf_lite", )
तर्क
विशेषताएं | |
---|---|
name |
नाम; आवश्यक इस टारगेट के लिए यूनीक नाम. |
blacklisted_protos
|
लेबल की सूची; डिफ़ॉल्ट रूप से srcs एट्रिब्यूट में मौजूद फ़ाइलों के लिए कोई कोड जनरेट नहीं होगा
blacklisted_protos .
इसका उपयोग उन .proto फ़ाइलों के लिए किया जाता है जो पहले से ही प्रोटो रनटाइम में लिंक की गई हैं, जैसे
any.proto .
|
command_line
|
String; आवश्यक कोड जनरेट करने के लिए, यह वैल्यू प्रोटो-कंपाइलर को दी जाएगी. सिर्फ़ हिस्से शामिल करें यह कोड-जनरेटर/प्लग-इन के लिए खास तौर पर काम करता है (जैसे, -I पैरामीटर शामिल न करें)
|
mnemonic
|
String; |
output_files
|
String; command_line में $(OUT) को कैसे फ़ॉर्मैट किया जाए
कई फ़ाइलों के मामले में, किसी एक फ़ाइल या आउटपुट डायरेक्ट्री का पाथ.
संभावित वैल्यू ये हैं: "एक", "एक से ज़्यादा".
|
plugin
|
लेबल; डिफ़ॉल्ट रूप से --plugin=protoc-gen-PLUGIN=<executable>. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
|
plugin_format_flag
|
String; --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
String; |
proto_compiler
|
लेबल; डिफ़ॉल्ट रूप से |
runtime
|
लेबल; डिफ़ॉल्ट रूप से |
proto_library
नियम का सोर्स देखेंproto_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)
समर्थन नहीं होना या रुकना. कृपया का उपयोग करें https://github.com/batzbuild/rules_proto देखें.
प्रोटोकॉल बफ़र की लाइब्रेरी तय करने के लिए proto_library
का इस्तेमाल करें
जिन्हें कई भाषाओं में इस्तेमाल किया जा सकता है. proto_library
को सूची में शामिल किया जा सकता है
इस्तेमाल किए जा सकने वाले नियमों के deps
क्लॉज़ में लागू होते हैं, जैसे कि java_proto_library
.
कमांड-लाइन पर कंपाइल किए जाने पर, proto_library
नाम की एक फ़ाइल बनाता है
foo-descriptor-set.proto.bin
, जो कि
नियम srcs को मैसेज करता है. यह फ़ाइल, क्रम से लगाई गई FileDescriptorSet
है, जो
इसमें बताया गया है
https://developers.google.com/protocol-buffers/docs/techniques#self-description.
इसमें सिर्फ़ उन .proto
फ़ाइलों के बारे में जानकारी होती है जिनका उल्लेख सीधे तौर पर
proto_library
नियम; ट्रांज़िटिव डिस्क्रिप्टर सेट का संग्रह
[ProtoInfo].transitive_descriptor_sets
Starlark कंपनी.
ProtoInfo.java
में दस्तावेज़ देखें.
सुझाया गया कोड संगठन:
- हर
.proto
फ़ाइल के लिए एकproto_library
नियम. -
foo.proto
नाम की फ़ाइल,foo_proto
नाम के नियम में होगी, जिसमें उसी पैकेज में मौजूद हो. - एक
[language]_proto_library
, जो नाम वालेproto_library
को रैप करता हैfoo_proto
को कॉल करना चाहिएfoo_[language]_proto
और एक ही पैकेज में हों.
तर्क
विशेषताएं | |
---|---|
name |
नाम; आवश्यक इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट रूप से proto_library के उन अन्य नियमों की सूची जिन पर टारगेट निर्भर करता है.
proto_library , सिर्फ़ अन्य प्रॉडक्ट पर निर्भर हो सकता है
proto_library टारगेट.
ऐसा हो सकता है कि यह भाषा के हिसाब से लाइब्रेरी पर निर्भर न हो.
|
srcs
|
लेबल की सूची; डिफ़ॉल्ट रूप से .proto और .protodevel फ़ाइलों की सूची जिन्हें
टारगेट बनाने के लिए प्रोसेस की गई. आम तौर पर, यह सूची खाली नहीं होती है. इस्तेमाल का एक उदाहरण
जहां srcs को खाली छोड़ा जा सकता है, वह alias-library है. यह है
deps में एक या एक से ज़्यादा Proto_library नियम है.
इस पैटर्न का इस्तेमाल, उदाहरण के लिए किया जा सकता है किसी स्थायी नाम से सार्वजनिक एपीआई एक्सपोर्ट करें.
|
allow_exports
|
लेबल; डिफ़ॉल्ट रूप से |
exports
|
लेबल की सूची; डिफ़ॉल्ट रूप से |
import_prefix
|
String; अगर नीति को सेट किया जाता है, तो इस नियम के इससे पहले |
strip_import_prefix
|
String; अगर नीति को सेट किया जाता है, तो इस नियम के अगर यह रिलेटिव पाथ है (स्लैश से शुरू नहीं होता), तो इसे पैकेज-रिलेटिव के तौर पर लिया जाता है एक. अगर यह सटीक है, तो इसे रिपॉज़िटरी-रिलेटिव पाथ माना जाता है.
|