इस पेज पर, अलग-अलग लेवल पर C++ नियमों के साथ इंटिग्रेट करने का तरीका बताया गया है.
C++ टूलचेन को ऐक्सेस करना
प्लैटफ़ॉर्म और टूलचेन पर C++ नियमों को माइग्रेट करने की प्रोसेस जारी है. इसलिए, आपको @bazel_tools//tools/cpp:toolchain_utils.bzl पर उपलब्ध हेल्पर फ़ंक्शन का इस्तेमाल करना चाहिए. यह फ़ंक्शन, टूलचेन के बंद और चालू होने, दोनों ही स्थितियों में काम करता है. अपने नियम में C++ टूलचेन का इस्तेमाल करने के लिए, Label एट्रिब्यूट जोड़ें. इसका नाम _cc_toolchain रखें और इसे @bazel_tools//tools/cpp:current_cc_toolchain पर पॉइंट करें. @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++ कंपाइलर को चालू करता है.
C++ के नियम, सुविधा के कॉन्फ़िगरेशन के आधार पर कमांड लाइन बनाने का खास तरीका इस्तेमाल करते हैं. कमांड लाइन बनाने के लिए, आपके पास ये चीज़ें होनी चाहिए:
featuresऔरaction_configs- येCcToolchainConfigInfoसे आते हैं औरCcToolchainInfoमें शामिल होते हैंFeatureConfiguration- 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 पर निर्भर नहीं होना चाहिए. इसके बजाय, उसे CcInfo को रैप करना चाहिए. उदाहरण के लिए, JavaCcInfo.
काम करने वाले उदाहरण की पूरी जानकारी rules_cc के उदाहरणों में देखी जा सकती है.
C++ नियमों के लॉजिक और कार्रवाइयों का फिर से इस्तेमाल करना
अभी यह सुविधा स्टेबल नहीं है. एपीआई स्टेबल होने के बाद, इस सेक्शन को अपडेट किया जाएगा. अप-टू-डेट जानकारी के लिए, #4570 को फ़ॉलो करें.