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

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

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

Starlark नियम से CC टूलचेन पर निर्भर रहने के लिए, आपको @rules_cc//cc:find_cc_toolchain.bzl पर उपलब्ध हेल्पर फ़ंक्शन का इस्तेमाल करना चाहिए.

अपने नियम में C++ टूलचेन का इस्तेमाल करने के लिए, toolchains पैरामीटर को use_cc_toolchain() पर सेट करें. इसके बाद, नियम लागू करने के लिए CcToolchainInfo पाने के लिए, find_cpp_toolchain(ctx) का इस्तेमाल करें. काम करने वाले पूरे उदाहरण को rules_cc के उदाहरणों में देखा जा सकता है.

C++ टूलचेन का इस्तेमाल करके, कमांड लाइन और एनवायरमेंट वैरिएबल जनरेट करना

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

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

हालांकि, अब भी टूल के हिसाब से गेटर मौजूद हैं. जैसे, compiler_executable. इनके बजाय get_tool_for_action का इस्तेमाल करें, क्योंकि टूल के हिसाब से गेटर को आखिरकार हटा दिया जाएगा.

काम करने वाले उदाहरण की पूरी जानकारी, rules_cc के उदाहरणों में देखी जा सकती है.

C++ नियमों पर निर्भर करने वाले Starlark नियमों को लागू करना और/या C++ नियमों को लागू करना

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

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

काम करने वाले उदाहरण की पूरी जानकारी, rules_cc के उदाहरणों में देखी जा सकती है.

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

अभी यह सुविधा स्टेबल नहीं है. एपीआई स्टेबल होने के बाद, इस सेक्शन को अपडेट किया जाएगा. अप-टू-डेट जानकारी के लिए, #4570 को फ़ॉलो करें.