नियम
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/bazenbuild/rules_proto का इस्तेमाल करें.
बताता है कि lang_proto_library नियम (उदाहरण के लिए, java_proto_library
) को प्रोटो-कंपाइलर
का इस्तेमाल करना चाहिए.
कुछ lang_proto_library नियम बताते हैं कि कमांड-लाइन फ़्लैग का इस्तेमाल करके किस टूलचेन का इस्तेमाल करें;
उनके दस्तावेज़ देखें.
आम तौर पर, जब तक आप अपने Java कंपाइलर को ट्यून नहीं करना चाहते, तब तक आपको इस तरह के नियम नहीं लिखने चाहिए.
कोई कंपाइलर नहीं है. प्रोटो-कंपाइलर को हम प्रोटो_लाइब्रेरी नियम से जोड़ लेते हैं. इसे ब्लेज़ पर कमांड लाइन फ़्लैग के तौर पर पास किया गया है.
कई सुविधाओं के लिए Proto_library नियम पर एक प्रोटो-कंपाइलर लागू करना ज़रूरी है.
कंपाइलर को लागू करना फ़ायदेमंद है, जिसे lang_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/bazerbuild/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
, जोfoo_proto
नाम वालाproto_library
रैप करता है, उसेfoo_[language]_proto
कहा जाना चाहिए. साथ ही, यह उसी पैकेज में मौजूद होना चाहिए.
तर्क
विशेषताएं | |
---|---|
name |
इस टारगेट का एक यूनीक नाम. |
deps
|
proto_library नियमों की सूची.
proto_library सिर्फ़ अन्य proto_library टारगेट पर निर्भर करता है.
यह भाषा से जुड़ी लाइब्रेरी पर निर्भर नहीं हो सकता.
|
srcs
|
.proto और .protodevel फ़ाइलों की सूची, जिसे टारगेट बनाने के लिए प्रोसेस किया गया है. आम तौर पर, यह एक खाली सूची होती है. srcs का एक उदाहरण, खाली लाइब्रेरी हो सकता है. यह प्रोटो लाइब्रेरी का नियम है, जो deps में एक या एक से ज़्यादा प्रोटो_लाइब्रेरी का इस्तेमाल करता है.
इस पैटर्न का इस्तेमाल, सार्वजनिक एपीआई को स्थायी नाम के तहत एक्सपोर्ट करने के लिए किया जा सकता है.
|
exports
|
|
import_prefix
|
सेट होने पर, इस नियम के इस प्रीफ़िक्स को जोड़ने से पहले, |
strip_import_prefix
|
सेट करने पर, इस नियम के अगर यह रिलेटिव पाथ है (स्लैश से शुरू नहीं हो रहा), तो इसे पैकेज-रिलेटिव माना जाता है. अगर यह कुल यूआरएल है, तो इसे रिपॉज़िटरी-रिलेटिव पाथ के तौर पर समझा जाता है. इस प्रीफ़िक्स को हटाने के बाद, |