नियम
proto_lang_toolchain
नियम का सोर्स देखेंproto_lang_toolchain(name, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, mnemonic, plugin, plugin_format_flag, progress_message, proto_compiler, restricted_to, runtime, tags, target_compatible_with, testonly, visibility)
अगर आप बेज़ल का इस्तेमाल कर रहे हैं, तो कृपया https://github.com/bazelbuild/rule_proto से नियम लोड करें.
यह बताती है कि कोई LING_proto_library नियम (उदाहरण के लिए, java_proto_library
) को
प्रोटो-कंपाइलर को शुरू करना चाहिए.
कुछ LING_proto_library नियमों से यह तय करने में मदद मिलती है कि कमांड लाइन फ़्लैग के इस्तेमाल से कौनसा टूलचेन इस्तेमाल किया जाना चाहिए.
इससे उनका दस्तावेज़ बनाने में मदद मिलती है.
आम तौर पर, आपको इस तरह के नियम तब तक नहीं लिखने चाहिए, जब तक कि आप अपने Java कंपाइलर को ट्यून न करना चाहें.
कोई कंपाइलर नहीं है. यह प्रोटो-कंपाइलर, proto_library नियम से जुड़ा होता है, जिसे हम अटैच करते हैं. इसे ब्लेज़ के लिए कमांड-लाइन फ़्लैग के तौर पर पास किया गया है.
कई सुविधाओं के लिए ज़रूरी है कि प्रोटो-कंपाइलर को Proto_library नियम पर ही लागू किया जाए.
कंपाइलर लागू करना फ़ायदेमंद होता है, जिसका इस्तेमाल MSG_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
|
blacklisted_protos के srcs एट्रिब्यूट में शामिल फ़ाइलों के लिए कोई कोड जनरेट नहीं होगा.
इसका इस्तेमाल उन .proto फ़ाइलों के लिए किया जाता है जो पहले से ही, रनटाइम के साथ लिंक हैं, जैसे कि
any.proto .
|
command_line
|
|
mnemonic
|
|
plugin
|
--plugin=protoc-gen-PLUGIN=
|
plugin_format_flag
|
--plugin=protoc-gen-PLUGIN=
|
progress_message
|
|
proto_compiler
|
|
runtime
|
|
प्रोटो_लाइब्रेरी
नियम का सोर्स देखेंproto_library(name, deps, srcs, data, 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/bazelbuild/rule_proto का उपयोग करें.
प्रोटोकॉल बफ़र की लाइब्रेरी तय करने के लिए, proto_library
का इस्तेमाल करें. इस लाइब्रेरी का इस्तेमाल कई भाषाओं में किया जा सकता है. हो सकता है कि proto_library
, java_proto_library
जैसे कुछ नियमों के deps
क्लॉज़ में शामिल हो.
कमांड-लाइन पर कंपाइल किए जाने पर proto_library
, foo-descriptor-set.proto.bin
नाम की एक फ़ाइल बनाता है. यह फ़ाइल,
नियम के srcs को तय करने वाली जानकारी के लिए सेट होती है. यह फ़ाइल एक सीरियल FileDescriptorSet
है. इसके बारे में
https://developers.google.com/protocol-buffers/docs/techniques#self-description में बताया गया है.
इसमें सिर्फ़ proto_library
नियम की ओर से बताई गई .proto
फ़ाइलों के बारे में जानकारी होती है; ट्रांज़िटर डिस्क्रिप्टर सेट को इकट्ठा करने की सुविधा, [ProtoInfo].transitive_descriptor_sets
Starlark की सेवा देने वाली कंपनी के ज़रिए मिलती है.
ProtoInfo.java
में दस्तावेज़ देखें.
सुझाया गया कोड संगठन:
- हर
.proto
फ़ाइल के लिए एकproto_library
नियम. -
foo.proto
नाम की फ़ाइल,foo_proto
नाम के नियम में होगी. यह नियम उसी पैकेज में मौजूद होगा. -
foo_proto
नाम वालेproto_library
को रैप करने वाले[language]_proto_library
कोfoo_[language]_proto
कहा जाना चाहिए और वह उसी पैकेज में मौजूद होना चाहिए.
तर्क
विशेषताएं | |
---|---|
name |
इस टारगेट के लिए यूनीक नाम. |
deps
|
proto_library नियमों की सूची.
proto_library सिर्फ़ अन्य proto_library टारगेट पर निर्भर कर सकता है.
यह भाषा-विशिष्ट लाइब्रेरी पर निर्भर नहीं हो सकता है.
|
srcs
|
.proto और .protodevel फ़ाइलों की सूची
जिन्हें टारगेट बनाने के लिए प्रोसेस किया जाता है. आम तौर पर, यह खाली सूची नहीं होती है. srcs के इस्तेमाल का एक उदाहरण alias-library होता है. यह deps में एक या इससे ज़्यादा अन्य proto_library नियम हैं.
इस पैटर्न का इस्तेमाल, सार्वजनिक एपीआई को किसी स्थायी नाम में एक्सपोर्ट करने के लिए किया जा सकता है.
|
exports
|
|
import_prefix
|
अगर इस नीति को सेट किया जाता है, तो इस नियम के इस प्रीफ़िक्स को जोड़ने से पहले, |
strip_import_prefix
|
सेट किए जाने पर, इस नियम के अगर यह रिलेटिव पाथ (स्लैश से शुरू नहीं) है, तो इसे पैकेज-रिलेटिव के तौर पर लिया जाता है. अगर यह हर वैरिएंट है, तो इसे रिपॉज़िटरी-रिलेटिव पाथ के तौर पर माना जाता है. इस प्रीफ़िक्स को हटाने के बाद, |