इस पेज पर, अलग-अलग लेवल पर C++ नियमों के साथ इंटिग्रेट करने का तरीका बताया गया है.
C++ टूलचेन को ऐक्सेस करना
Starlark नियम से CC टूलचेन पर निर्भर रहने के लिए, आपको @rules_cc//cc:find_cc_toolchain.bzl पर उपलब्ध हेल्पर फ़ंक्शन का इस्तेमाल करना चाहिए.
अपने नियम में C++ टूलचेन का इस्तेमाल करने के लिए, toolchains पैरामीटर को use_cc_toolchain() पर सेट करें. इसके बाद, नियम लागू करने के लिए find_cpp_toolchain(ctx) का इस्तेमाल करके CcToolchainInfo पाएं. काम करने वाले पूरे उदाहरण को rules_cc के उदाहरणों में देखा जा सकता है.
C++ टूलचेन का इस्तेमाल करके, कमांड लाइन और एनवायरमेंट वैरिएबल जनरेट करना
आम तौर पर, C++ टूलचेन के साथ इंटिग्रेट किया जाता है, ताकि C++ नियमों की तरह ही कमांड लाइन फ़्लैग मिल सकें. हालाँकि, इसमें C++ ऐक्शन का सीधे तौर पर इस्तेमाल नहीं किया जाता. ऐसा इसलिए है, क्योंकि अपने ऐक्शन लिखते समय, उन्हें C++ टूलचेन के साथ लगातार काम करना चाहिए. उदाहरण के लिए, C++ कमांड लाइन फ़्लैग को ऐसे टूल पर पास करना जो बैकग्राउंड में C++ कंपाइलर को चालू करता है.
C++ के नियम, सुविधा के कॉन्फ़िगरेशन के आधार पर, कमांड लाइन बनाने के खास तरीके का इस्तेमाल करते हैं. कमांड लाइन बनाने के लिए, आपको इनकी ज़रूरत होगी:
featuresऔरaction_configs- येCcToolchainConfigInfoसे आते हैं औरCcToolchainInfoमें शामिल होते हैंFeatureConfiguration- returned by cc_common.configure_features- cc टूलचेन कॉन्फ़िगरेशन वैरिएबल - cc_common.create_compile_variables या cc_common.create_link_variables से मिलते हैं.
हालांकि, अब भी टूल के हिसाब से गेटर मौजूद हैं. जैसे, 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 को फ़ॉलो करें.