C++ नियमों के साथ इंटिग्रेट करना

किसी समस्या की शिकायत करें स्रोत देखें

इस पेज पर बताया गया है कि आप अलग-अलग लेवल पर C++ नियमों के साथ कैसे इंटिग्रेट कर सकते हैं.

C++ टूलचेन को ऐक्सेस करना

प्लैटफ़ॉर्म और टूलचेन पर C++ नियमों का लगातार माइग्रेशन होने की वजह से, आपको @bazel_tools//tools/cpp:toolchain_utils.bzl पर उपलब्ध हेल्पर फ़ंक्शन का इस्तेमाल करना चाहिए, जो टूलचेन के बंद और चालू होने पर काम करता है. अपने नियम में C++ टूलचेन पर निर्भर करने के लिए, _cc_toolchain नाम का एकLabel एट्रिब्यूट जोड़ें और उसे @bazel_tools//tools/cpp:current_cc_toolchain (cc_toolchain_alias के इंस्टेंस, जो अभी चुने गए C++ टूलचेन पर ले जाता है) पर ले जाएं. इसके बाद, नियम लागू करने में, find_cpp_toolchain(ctx) का इस्तेमाल करके CcToolchainInfo पाएं. काम करने का सही उदाहरण, Rules_cc उदाहरण में देखा जा सकता है.

C++ टूलचेन का उपयोग करके कमांड लाइन और एनवायरमेंट वैरिएबल जनरेट करना

आम तौर पर, C++ टूल का इस्तेमाल करते हुए, आप C++ टूल के साथ कमांड लाइन फ़्लैग भी लगा सकते हैं. इसकी वजह यह है कि अपनी कार्रवाइयां लिखते समय, उन्हें C++ टूल चेन के साथ काम करना चाहिए. उदाहरण के लिए, C++ कमांड लाइन पास करने से, ऐसे टूल की ओर ध्यान जाता है जो C++ कंपाइलर को पर्दे के पीछे शुरू करता है.

C++ नियम, सुविधा कॉन्फ़िगरेशन के आधार पर कमांड लाइन बनाने के खास तरीके का इस्तेमाल करते हैं. कमांड लाइन बनाने के लिए, आपको इन चीज़ों की ज़रूरत होगी:

इसमें अब भी टूल से जुड़े खास टूल मौजूद हैं, जैसे कि compiler_executable. इसके बजाय get_tool_for_action को प्राथमिकता दें, क्योंकि टूल-विशिष्ट गैटरर को बाद में निकाल दिया जाएगा.

काम करने का सही उदाहरण, Rules_cc उदाहरण में देखा जा सकता है.

Clar+ नियम और/या C++ नियम जिन पर निर्भर हैं, उन्हें लागू करना

ज़्यादातर C++ नियमों से, CcInfo की सेवा मिलती है. इसमें CompilationContext और LinkingContext शामिल है. इनकी मदद से, लिंक की जाने वाली सभी ट्रांज़िटिव हेडर या लाइब्रेरी जैसी जानकारी को ऐक्सेस किया जा सकता है. CcInfo और CcToolchainInfo कस्टम स्टारलार्क नियमों के ज़रिए, वे सारी जानकारी पा सकते हैं जो उन्हें चाहिए.

अगर एक कस्टम स्टारलार्क नियम CcInfo देता है, तो यह C++ नियमों का संकेत है कि वे भी इस पर निर्भर हो सकते हैं. हालांकि, सावधान रहें - अगर आपको सिर्फ़ CcInfo को ग्राफ़ के ज़रिए बाइनरी नियम में भेजना है, जो कि उसका इस्तेमाल करता है, तो किसी दूसरी कंपनी में CcInfo को रैप करें. उदाहरण के लिए, अगर java_library नियम, java_binary पर नेटिव डिपेंडेंसी लागू करना चाहता है, तो उसे सीधे CcInfo नहीं देना चाहिए (cc_binary के आधार पर cc_binary का कोई मतलब नहीं होता), इसे उदाहरण के तौर पर, JavaCcInfo में रैप करना चाहिए.

काम करने का सही उदाहरण, Rules_cc उदाहरण में देखा जा सकता है.

C++ नियमों के तर्क और कार्रवाइयों का फिर से इस्तेमाल करना

स्टेबल नहीं है; एपीआई के स्टेबल हो जाने के बाद यह सेक्शन अपडेट कर दिया जाएगा. अप-टू-डेट जानकारी के लिए #4570 का पालन करें.