cc_common

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

C++ के कंपाइलेशन, लिंक करने, और कमांड लाइन जनरेट करने के लिए सुविधाएं.

पैसे चुकाकर बने सदस्यों के लिए

action_is_enabled

bool cc_common.action_is_enabled(feature_configuration, action_name)

अगर सुविधा के कॉन्फ़िगरेशन में, Actions_config चालू किया गया है, तो 'सही' दिखाता है.

पैरामीटर

पैरामीटर ब्यौरा
feature_configuration
सुविधा के कॉन्फ़िगरेशन के लिए क्वेरी करना ज़रूरी है.
action_name ज़रूरी है
action_config का नाम.

CcToolchainInfo

Provider cc_common.CcToolchainInfo

इस कुंजी का इस्तेमाल, सेवा देने वाली कंपनी को वापस पाने के लिए किया जाता है. इस कुंजी में, इस्तेमाल किए जा रहे C++ टूलचेन के बारे में जानकारी होती है

compile

tuple cc_common.compile(actions, feature_configuration, cc_toolchain, srcs=[], public_hdrs=[], private_hdrs=[], includes=[], quote_includes=[], system_includes=[], framework_includes=[], defines=[], local_defines=[], include_prefix='', strip_include_prefix='', user_compile_flags=[], compilation_contexts=[], name, disallow_pic_outputs=False, disallow_nopic_outputs=False, additional_inputs=[])

इसका इस्तेमाल C++ कंपाइलेशन के लिए किया जाना चाहिए. (CompilationContext, CcCompilationOutputs) का टपल देता है.

पैरामीटर

पैरामीटर ब्यौरा
actions ज़रूरी है
actions ऑब्जेक्ट.
feature_configuration
feature_configuration क्वेरी करना ज़रूरी है.
cc_toolchain
CcToolchainInfo कंपनी का इस्तेमाल करना ज़रूरी है.
srcs डिफ़ॉल्ट तौर पर यह [] पर सेट होता है
इकट्ठा की जाने वाली सोर्स फ़ाइलों की सूची.
public_hdrs डिफ़ॉल्ट तौर पर यह [] पर सेट होता है
srcs को कंपाइल करने के लिए, हेडर की सूची ज़रूरी है. इसे डिपेंडेंट नियमों में, ट्रांज़िशन के लिए शामिल किया जा सकता है.
private_hdrs डिफ़ॉल्ट तौर पर यह [] पर सेट होता है
srcs को कंपाइल करने के लिए, हेडर की सूची ज़रूरी है. साथ ही, इसे डिपेंडेंट नियमों से शामिल नहीं किया जा सकता.
includes क्रम; या depset; डिफ़ॉल्ट यह है []
एंगल ब्रैकेट और कोट, दोनों से रेफ़र की गई हेडर फ़ाइलों के लिए खोज पाथ. आम तौर पर -I के साथ पास किया जाता है. आश्रितों के लिए संक्रामक रूप से फैलाया जाता है.
quote_includes डिफ़ॉल्ट वैल्यू [] है
कोट से रेफ़र की गई हेडर फ़ाइलों के लिए खोज पाथ, जैसे कि #include "foo/bar/header.h". वे या तो exec रूट या निरपेक्ष के सापेक्ष हो सकते हैं. आम तौर पर, इसे -iquote से पास किया जाता है. आश्रितों के लिए संक्रामक रूप से फैलाया जाता है.
system_includes डिफ़ॉल्ट वैल्यू [] है
ऐंगल ब्रैकेट से रेफ़र की गई हेडर फ़ाइलों के लिए खोज पाथ, जैसे कि #include <foo/bar/header.h>. वे exec रूट या ऐब्सलूट, से मिलते-जुलते हो सकते हैं. आम तौर पर -isystem के साथ पास किया जाता है. आश्रितों के लिए संक्रामक रूप से फैलाया जाता है.
framework_includes डिफ़ॉल्ट तौर पर यह [] पर सेट होता है
Apple फ़्रेमवर्क की हेडर फ़ाइलों के लिए खोज पाथ. वे या तो exec रूट या निरपेक्ष के सापेक्ष हो सकते हैं. आम तौर पर, -F से पास होता है. आश्रितों के लिए संक्रामक रूप से फैलाया जाता है.
defines डिफ़ॉल्ट वैल्यू [] है
इस टारगेट को तैयार करने के लिए, वैल्यू का सेट ज़रूरी है. हर परिभाषा एक स्ट्रिंग होती है. आश्रितों के लिए संक्रामक रूप से फैलाया जाता है.
local_defines डिफ़ॉल्ट वैल्यू [] है
इस टारगेट को तैयार करने के लिए, वैल्यू का सेट ज़रूरी है. हर परिभाषा एक स्ट्रिंग होती है. आश्रितों को ट्रांज़िटिव नहीं किया जाता.
include_prefix डिफ़ॉल्ट वैल्यू '' है
इस नियम के हेडर के पाथ में जोड़ने के लिए प्रीफ़िक्स. अगर यह सेट हो जाता है, तो इस नियम के hdrs एट्रिब्यूट के हेडर को ऐक्सेस किया जा सकता है. यह वैल्यू, रिपॉज़िटरी-रिलेटिव पाथ में पहले से जोड़े गए इस एट्रिब्यूट की वैल्यू होती है. इस प्रीफ़िक्स को जोड़ने से पहले, Strip_include_prefix एट्रिब्यूट में मौजूद प्रीफ़िक्स को हटा दिया गया.
strip_include_prefix डिफ़ॉल्ट '' है
इस नियम के हेडर के पाथ से हटाया जाने वाला प्रीफ़िक्स. अगर यह सेट हो जाता है, तो इस प्रीफ़िक्स के कट जाने पर, इस नियम के hdrs एट्रिब्यूट में हेडर को उनके पाथ पर ऐक्सेस किया जा सकता है. अगर यह पाथ मिलता-जुलता है, तो इसे पैकेज-रिलेटिव के तौर पर माना जाता है. अगर यह एक सटीक है, तो इसे रिपॉज़िटरी-रिलेटिव पाथ के तौर पर माना जाता है. इस प्रीफ़िक्स को हटाने के बाद, include_prefix एट्रिब्यूट में प्रीफ़िक्स जोड़ा गया है.
user_compile_flags डिफ़ॉल्ट वैल्यू [] है
कंपाइलेशन के विकल्पों की अन्य सूची.
compilation_contexts डिफ़ॉल्ट वैल्यू [] है
कंपाइलेशन के लिए इस्तेमाल की जाने वाली डिपेंडेंसी के हेडर.
name ज़रूरी है
इसका इस्तेमाल, इस तरीके से बनाए गए ऐक्शन के आउटपुट आर्टफ़ैक्ट को नाम देने के लिए किया जाता है. `main_OUT` आर्ग्युमेंट भी देखें.
disallow_pic_outputs डिफ़ॉल्ट वैल्यू False है
पीआईसी आउटपुट बनाए जाने चाहिए या नहीं.
disallow_nopic_outputs डिफ़ॉल्ट False है
NOPIC आउटपुट बनाया जाना चाहिए या नहीं.
additional_inputs डिफ़ॉल्ट सेटिंग [] है
srcs को कंपाइल करने के लिए ज़रूरी अतिरिक्त फ़ाइलों की सूची

configure_features

FeatureConfiguration cc_common.configure_features(ctx=None, cc_toolchain, language=None, requested_features=[], unsupported_features=[])

device_कॉन्फ़िगरेशन इंस्टेंस बनाता है. cpp कॉन्फ़िगरेशन फ़्रैगमेंट की ज़रूरत होती है.

पैरामीटर

पैरामीटर ब्यौरा
ctx ctx; या None; डिफ़ॉल्ट रूप से None
नियम का संदर्भ है.
cc_toolchain ज़रूरी है
cc_toolchain जिसके लिए हम सुविधाएं कॉन्फ़िगर करते हैं.
language string; या None; डिफ़ॉल्ट तौर पर None है
वह भाषा जिसके लिए कॉन्फ़िगर करना है: c++ या objc (डिफ़ॉल्ट c++)
requested_features [] डिफ़ॉल्ट के तौर पर सेट है
चालू की जाने वाली सुविधाओं की सूची.
unsupported_features डिफ़ॉल्ट सेटिंग [] है
उन सुविधाओं की सूची जिन पर मौजूदा नियम लागू नहीं होगा.

create_cc_toolchain_config_info

CcToolchainConfigInfo cc_common.create_cc_toolchain_config_info(ctx, features=[], action_configs=[], artifact_name_patterns=[], cxx_builtin_include_directories=[], toolchain_identifier, host_system_name=None, target_system_name, target_cpu, target_libc, compiler, abi_version=None, abi_libc_version=None, tool_paths=[], make_variables=[], builtin_sysroot=None)

CcToolchainConfigInfo प्रोवाइडर बनाता है

पैरामीटर

पैरामीटर ब्यौरा
ctx ज़रूरी है
नियम का संदर्भ.
features डिफ़ॉल्ट वैल्यू [] है
इसमें एक सुविधा के लिए सभी फ़्लैग की खास जानकारी होती है.

तर्क:

name: सुविधा का नाम. टूलचेन में 'फ़ीचर' सेक्शन जोड़कर और BUILD फ़ाइल में सुविधा के तौर पर उससे जुड़ी स्ट्रिंग जोड़कर, Bazel में बदलाव किए बिना कोई सुविधा शुरू की जा सकती है.

enabled: 'सही' होने पर यह सुविधा चालू रहती है. यह सुविधा तब तक चालू रहती है, जब तक कि किसी नियम के टाइप को साफ़ तौर पर 'काम नहीं करता' के तौर पर मार्क नहीं किया जाता.

flag_sets: FlagSet सूची. अगर दी गई सुविधा सक्षम है, तो फ़्लैग सेट उन कार्रवाइयों के लिए लागू किए जाएंगे, जिनके लिए बताई गई हैं.

env_sets: EnvSet की सूची. अगर दी गई सुविधा चालू है, तो एनवी सेट को उन कार्रवाइयों के लिए लागू किया जाएगा जिनके लिए वे तय की गई हैं.

requires: सुविधा के सेट की सूची से तय होता है कि यह सुविधा, टूलचेन के साथ कब काम करती है. यह सुविधा तब ही काम करती है, जब सुविधा का कोई भी सेट पूरी तरह से लागू होता हो. इसका मतलब है कि किसी सुविधा के सेट की सभी सुविधाएं चालू होनी चाहिए. अगर requires को शामिल नहीं किया जाता है, तो यह सुविधा अलग से काम करती है और अन्य सुविधाएं चालू नहीं होती हैं. उदाहरण के लिए, चालू किए गए बिल्ड मोड (opt / Fastbuild / dbg) के आधार पर फ़्लैग को फ़िल्टर करने के लिए, इसका इस्तेमाल करें.

implies: सुविधाओं या कार्रवाई कॉन्फ़िगरेशन की ऐसी स्ट्रिंग सूची जो इस सुविधा के चालू होने पर, अपने-आप चालू हो जाती है. अगर किसी भी अनजान सुविधा या कार्रवाई कॉन्फ़िगरेशन को चालू नहीं किया जा सकता, तो यह सुविधा भी चालू नहीं होगी.

provides: ऐसे नामों की सूची जिनके साथ इस सुविधा का विरोध है.

किसी सुविधा को चालू नहीं किया जा सकता, अगर:
- provides में किसी अन्य सुविधा या कार्रवाई कॉन्फ़िगरेशन का नाम हो, जिसे हम चालू करना चाहते हैं.
- provides में वही वैल्यू मौजूद है जो किसी दूसरी सुविधा या कार्रवाई कॉन्फ़िगरेशन में 'उपलब्ध कराई जाती है' में मौजूद है, जिसे हम चालू करना चाहते हैं. इसका इस्तेमाल यह पक्का करने के लिए करें कि काम न करने वाली सुविधाएं एक ही समय पर गलती से चालू न हो पाएं. इससे कंपाइलर गड़बड़ियों का पता लगाने में मुश्किल होती है.
action_configs डिफ़ॉल्ट तौर पर यह [] पर सेट होता है
ऐक्शन कॉन्फ़िगरेशन, Bazel ऐक्शन से जुड़ा होता है. इसमें, चालू सुविधाओं के आधार पर किसी टूल को चुना जाता है. कार्रवाई कॉन्फ़िगरेशन चालू होने की प्रोसेस, सुविधाओं जैसे सिमेंटिक्स के हिसाब से होती है: कोई सुविधा, किसी कार्रवाई कॉन्फ़िगरेशन को किसी दूसरी सुविधा की तरह ही 'ज़रूरी' या 'लागू' कर सकती है.

तर्क:

action_name: Bazel की उस कार्रवाई का नाम जिस पर यह कॉन्फ़िगरेशन लागू होता है. उदाहरण के लिए, 'c-compile' या 'c-module-compile'.

enabled: 'सही' होने पर, यह कार्रवाई चालू रहती है. ऐसा तब तक होता है, जब तक किसी नियम के टाइप को साफ़ तौर पर 'काम नहीं करता' के तौर पर मार्क नहीं किया जाता.

tools: कार्रवाई पर लागू किया जाने वाला टूल, सुविधा के सेट वाला ऐसा पहला टूल होगा जो सुविधा के कॉन्फ़िगरेशन से मेल खाता है. अगर कोई टूल उपलब्ध कराए गए सुविधा कॉन्फ़िगरेशन से मेल नहीं खाता है, तो गड़बड़ी दिखाई देगी - इस वजह से, बिना सुविधा वाले सेट के साथ एक डिफ़ॉल्ट टूल देना अच्छा होता है.

flag_sets: अगर दी गई कार्रवाई कॉन्फ़िगरेशन चालू है, तो फ़्लैग सेट उससे जुड़ी कार्रवाई पर लागू होंगे.

implies: ऐसी सुविधाओं या कार्रवाई कॉन्फ़िगरेशन की सूची जो इस कार्रवाई कॉन्फ़िगरेशन के चालू होने पर, अपने-आप चालू हो जाते हैं. अगर किसी भी दिखाई गई सुविधा या कार्रवाई कॉन्फ़िगरेशन को चालू नहीं किया जा सकता, तो यह कार्रवाई कॉन्फ़िगरेशन (बिना बोले) भी चालू नहीं किया जाएगा.

artifact_name_patterns डिफ़ॉल्ट है []
किसी कार्रवाई के लिए इनपुट या आउटपुट आर्टफ़ैक्ट की दी गई कैटगरी के आर्टफ़ैक्ट का नाम.

तर्क:

category_name: आर्टफ़ैक्ट की वह कैटगरी जिस पर यह चुना जाता है. इस फ़ील्ड की तुलना, Bazel में तय की गई कैटगरी की सूची से की जाती है. कैटगरी के उदाहरण में, "linked_linked" या इस विकल्प के लिए आर्टफ़ैक्ट शामिल है. एक्सटेंशन के साथ इसका इस्तेमाल, टारगेट के नाम के आधार पर आर्टफ़ैक्ट का नाम बनाने के लिए किया जाता है.

extension: इस चुनाव के लिए आर्टफ़ैक्ट बनाने का एक्सटेंशन. प्रीफ़िक्स के साथ इसे टारगेट के नाम के आधार पर आर्टफ़ैक्ट का नाम बनाने के लिए इस्तेमाल किया जाता है.

cxx_builtin_include_directories डिफ़ॉल्ट वैल्यू []
है

C++ कंपाइल करने के लिए पहले से मौजूद डायरेक्ट्री शामिल हैं. ये सटीक पाथ होने चाहिए, जिनका इस्तेमाल कंपाइलर करता है. साथ ही, ये आम तौर पर exec रूट के मिलते-जुलते होने चाहिए.

कंपाइलर जिस पाथ का इस्तेमाल करता है उसे 'gcc -E -xc++ - -v' की मदद से तय किया जा सकता है.

हम फ़िलहाल C कंपाइलेशन के लिए भी C++ पाथ का इस्तेमाल करते हैं. यह तब तक सुरक्षित रहता है, जब तक C++ और C हेडर फ़ाइलों के बीच नाम का टकराव न हो.

रिलेटिव पाथ का समाधान, कॉन्फ़िगरेशन फ़ाइल डायरेक्ट्री के आधार पर किया जाता है.

अगर कंपाइलर के पास --sysroot सहायता है, तो इन पाथ को शामिल पाथ के बजाय %sysroot% का इस्तेमाल करना चाहिए और सही जगह बदलने के लिए ज़रूरी जानकारी देने के लिए sysroot एट्रिब्यूट तय करना चाहिए.

toolchain_identifier ज़रूरी है

क्रॉसटूल रिलीज़ में टूलचेन का यूनीक आइडेंटिफ़ायर. पाथ में इसे डायरेक्ट्री के नाम के तौर पर इस्तेमाल किया जा सकता है.

इसे इस रेगुलर एक्सप्रेशन से मैच होना चाहिए: [a-zA-Z_][\.\- \w]*

host_system_name string; या None; डिफ़ॉल्ट तौर पर None
अनदेखा किया जाता है.
target_system_name ज़रूरी है
GNU सिस्टम का नाम.
target_cpu ज़रूरी है
टारगेट आर्किटेक्चर स्ट्रिंग.
target_libc ज़रूरी है
libc वर्शन स्ट्रिंग (उदाहरण के लिए, "glibc-2.2.2"). अगर स्ट्रिंग "macosx" है, तो प्लैटफ़ॉर्म को MacOS माना जाएगा. अगर ऐसा नहीं है, तो Linux
compiler ज़रूरी है
कंपाइलर स्ट्रिंग (जैसे कि "gcc"). मौजूदा टूलचेन के कंपाइलर को फ़्लैग वैल्यू के तौर पर `@bazel_tools//tools/cpp:compiler (compiler_flag)` का इस्तेमाल किया जाता है. जिन टारगेट के लिए कंपाइलर के हिसाब से फ़्लैग की ज़रूरत होती है वे https://github.com/bazelbuild/rules_cc/blob/main/cc/compiler/BUILD के चुने गए स्टेटमेंट में config_settings का इस्तेमाल कर सकते हैं. इसके अलावा, अगर मौजूदा सेटिंग ज़रूरत के मुताबिक नहीं हैं, तो कस्टम config_setting बना सकते हैं.
abi_version string; या None; डिफ़ॉल्ट None है
abi का इस्तेमाल हो रहा है, जो gcc वर्शन है. E.g.: "जीसीसी-3.4"
abi_libc_version string; या None; डिफ़ॉल्ट None है
हम जिस abi का इस्तेमाल कर रहे हैं वह glibc का वर्शन है.
tool_paths []
टूल लोकेशन डिफ़ॉल्ट है.

तर्क:

name: टूल का नाम.

path: टूल की जगह; यह सटीक पाथ (हर्मेटिक टूलचेन के मामले में) हो सकता है या cc_toolchain के पैकेज से मिलता-जुलता पाथ हो सकता है.

make_variables डिफ़ॉल्ट [] है
एक ऐसा वैरिएबल बनाएं जिसे नियम के लिए ऐक्सेस किया जा सकता है.
builtin_sysroot string; या None; डिफ़ॉल्ट रूप से None
पहले से मौजूद sysroot होता है. अगर यह एट्रिब्यूट मौजूद नहीं है, तो Bazel किसी दूसरे sysroot का इस्तेमाल करने की अनुमति नहीं देता. जैसे कि --grte_top विकल्प के ज़रिए.

create_compilation_context

CompilationContext cc_common.create_compilation_context(headers=unbound, system_includes=unbound, includes=unbound, quote_includes=unbound, framework_includes=unbound, defines=unbound, local_defines=unbound)

CompilationContext बनाता है.

पैरामीटर

पैरामीटर ब्यौरा
headers डिफ़ॉल्ट वैल्यू unbound है
इस टारगेट को कंपाइल करने के लिए, हेडर का सेट ज़रूरी है
system_includes डिफ़ॉल्ट वैल्यू unbound है
ऐंगल ब्रैकेट से जुड़ी हेडर फ़ाइलों के लिए, खोज पाथ का सेट, जैसे कि #include <foo/bar/header.h>. वे exec रूट या ऐब्सलूट, दोनों से जुड़े हो सकते हैं. आम तौर पर -isystem से पास किया जाता है
includes डिफ़ॉल्ट वैल्यू unbound है
ऐंगल ब्रैकेट और कोट दोनों से रेफ़र की गई हेडर फ़ाइलों के लिए, खोज पाथ का सेट.आम तौर पर, इसे -I के साथ पास किया जाता है
quote_includes डिफ़ॉल्ट वैल्यू unbound है
कोट से रेफ़र की गई हेडर फ़ाइलों के लिए, खोज पाथ का सेट. उदाहरण के लिए, #include "foo/bar/header.h". वे या तो exec रूट या निरपेक्ष के सापेक्ष हो सकते हैं. आम तौर पर -iquote के साथ पास किया जाता है
framework_includes डिफ़ॉल्ट वैल्यू unbound है
हेडर फ़ाइलों के लिए, फ़्रेमवर्क खोज पाथ का सेट (सिर्फ़ Apple प्लैटफ़ॉर्म के लिए)
defines डिफ़ॉल्ट वैल्यू unbound है
इस टारगेट को तैयार करने के लिए, वैल्यू का सेट ज़रूरी है. हर परिभाषा एक स्ट्रिंग होती है. आश्रितों के लिए संक्रमित रूप से फैलाया जाता है.
local_defines डिफ़ॉल्ट वैल्यू unbound है
इस टारगेट को तैयार करने के लिए, वैल्यू का सेट ज़रूरी है. हर परिभाषा एक स्ट्रिंग होती है. आश्रितों को ट्रांज़िट के रूप में नहीं भेजा जाता.

create_compilation_outputs

CcCompilationOutputs cc_common.create_compilation_outputs(objects=None, pic_objects=None)

कंपाइलेशन आउटपुट ऑब्जेक्ट बनाएं.

पैरामीटर

पैरामीटर ब्यौरा
objects depset; या None; डिफ़ॉल्ट रूप से None
ऑब्जेक्ट फ़ाइलों की सूची है.
pic_objects depset; या None; डिफ़ॉल्ट तौर पर None
तस्वीर वाली ऑब्जेक्ट फ़ाइलों की सूची होती है.

create_compile_variables

Variables cc_common.create_compile_variables(cc_toolchain, feature_configuration, source_file=None, output_file=None, user_compile_flags=None, include_directories=None, quote_include_directories=None, system_include_directories=None, framework_include_directories=None, preprocessor_defines=None, thinlto_index=None, thinlto_input_bitcode_file=None, thinlto_output_object_file=None, use_pic=False, add_legacy_cxx_options=False, variables_extension=unbound)

कंपाइलेशन ऐक्शन के लिए इस्तेमाल किए जाने वाले वैरिएबल दिखाता है.

पैरामीटर

पैरामीटर ब्यौरा
cc_toolchain ज़रूरी है
cc_toolchain, जिसके लिए हम बिल्ड वैरिएबल बना रहे हैं.
feature_configuration
सुविधा के कॉन्फ़िगरेशन के लिए क्वेरी करना ज़रूरी है.
source_file डिफ़ॉल्ट तौर पर यह None
कंपाइलेशन के लिए, एक वैकल्पिक सोर्स फ़ाइल होती है. कृपया cc_Common.get_memory_inefficiency_command_line से जनरेट की गई कमांड लाइन के आखिर में जोड़ने के बजाय, source_file को पास करें. ऐसा करने पर, टूलटिप के फ़्लैग को सही तरीके से बताने और सही जगह पर लाने के लिए, टूलचेन लेखक का काम होता है.
output_file डिफ़ॉल्ट वैल्यू None है
कंपाइलेशन की आउटपुट फ़ाइल देना ज़रूरी नहीं है. कृपया cc_Common.get_memory_inefficiency_command_line से जनरेट की गई कमांड लाइन के आखिर में जोड़े जाने के लिए, load_file को यहां पास करें. ऐसा करने पर, टूलचेन के लेखक, कंपाइलर फ़्लैग को सही तरीके से तय और पोज़िशन कर पाते हैं.
user_compile_flags स्ट्रिंग का क्रम या None; डिफ़ॉल्ट रूप से None
अन्य कंपाइलेशन फ़्लैग (कॉप्ट) की सूची होती है.
include_directories depset; या None; डिफ़ॉल्ट रूप से None है
शामिल की गई डायरेक्ट्री का डिपसेट.
quote_include_directories depset; या None; डिफ़ॉल्ट रूप से None है
कोटेशन के डिपसेट में डायरेक्ट्री शामिल होती है.
system_include_directories depset; या None; डिफ़ॉल्ट None है
सिस्टम के विवरण में डायरेक्ट्री शामिल हैं.
framework_include_directories depset; या None; डिफ़ॉल्ट रूप से None है
फ़्रेमवर्क के विवरण में डायरेक्ट्री शामिल होती हैं.
preprocessor_defines depset; या None; डिफ़ॉल्ट None है
प्रीप्रोसेसर का विवरण.
thinlto_index string; या None; डिफ़ॉल्ट रूप से, None
LTO इंडेक्स फ़ाइल पाथ होता है.
thinlto_input_bitcode_file string; या None; डिफ़ॉल्ट रूप से None
एलटीओ बैकएंड के लिए इनपुट की गई बिटकोड फ़ाइल होती है.
thinlto_output_object_file string; या None; डिफ़ॉल्ट रूप से, None
ऑब्जेक्ट फ़ाइल होती है, जिसका आउटपुट LTO बैकएंड से मिलता है.
use_pic डिफ़ॉल्ट वैल्यू False पर सेट होती है
सही होने पर, कंपाइलेशन, पोज़िशन से अलग कोड जनरेट करेगा.
add_legacy_cxx_options डिफ़ॉल्ट वैल्यू False
इस्तेमाल नहीं की गई है.
variables_extension dict; डिफ़ॉल्ट तौर पर unbound होता है
अतिरिक्त वैरिएबल का डिक्शनरी, जिसका इस्तेमाल कंपाइल कार्रवाइयों में किया जाता है.

LibraryToLink cc_common.create_library_to_link(actions, feature_configuration=None, cc_toolchain=None, static_library=None, pic_static_library=None, dynamic_library=None, interface_library=None, pic_objects=unbound, objects=unbound, alwayslink=False, dynamic_library_symlink_path='', interface_library_symlink_path='')

LibraryToLink को बनाया जाता है

पैरामीटर

पैरामीटर ब्यौरा
actions ज़रूरी है
actions ऑब्जेक्ट.
feature_configuration डिफ़ॉल्ट के तौर पर सेट None
feature_configuration क्वेरी की जाती है.
cc_toolchain डिफ़ॉल्ट तौर पर, None
CcToolchainInfo सेवा देने वाली कंपनी का इस्तेमाल किया जाता है.
static_library फ़ाइल या None; डिफ़ॉल्ट रूप से लिंक की जाने वाली स्टैटिक लाइब्रेरी का None
File है.
pic_static_library फ़ाइल या None; डिफ़ॉल्ट रूप से लिंक की जाने वाली तस्वीर की स्टैटिक लाइब्रेरी का None
File है.
dynamic_library फ़ाइल या None; डिफ़ॉल्ट रूप से यह डाइनैमिक लाइब्रेरी का None
File है, जिसे लिंक करना है. इसका इस्तेमाल हमेशा रनटाइम के लिए किया जाता है. interface_library पास न होने पर, इसका इस्तेमाल लिंक करने के लिए किया जाता है.
interface_library फ़ाइल या None; डिफ़ॉल्ट रूप से यह इंटरफ़ेस लाइब्रेरी का None
File है जिसे लिंक करना है.
pic_objects फ़ाइल का क्रम; डिफ़ॉल्ट तौर पर unbound
एक्सपेरिमेंट के तौर पर उपलब्ध है, इसका इस्तेमाल न करें
objects फ़ाइल का क्रम; डिफ़ॉल्ट तौर पर unbound
एक्सपेरिमेंट के तौर पर उपलब्ध है, इसका इस्तेमाल न करें
डिफ़ॉल्ट वैल्यू False है
--whole_archive ब्लॉक में स्टैटिक लाइब्रेरी/ऑब्जेक्ट को लिंक करना है या नहीं.
string; डिफ़ॉल्ट तौर पर यह '' पर सेट होता है
Solib डायरेक्ट्री में डाइनैमिक लाइब्रेरी के लिंक का डिफ़ॉल्ट पाथ बदलें. डिफ़ॉल्ट का इस्तेमाल करने के लिए स्ट्रिंग खाली है.
डिफ़ॉल्ट वैल्यू '' है
Solib डायरेक्ट्री में इंटरफ़ेस लाइब्रेरी के लिंक का डिफ़ॉल्ट पाथ बदलें. डिफ़ॉल्ट का इस्तेमाल करने के लिए स्ट्रिंग खाली है.

Variables cc_common.create_link_variables(cc_toolchain, feature_configuration, library_search_directories=None, runtime_library_search_directories=None, user_link_flags=None, output_file=None, param_file=None, is_using_linker=True, is_linking_dynamic_library=False, must_keep_debug=True, use_test_only_flags=False, is_static_linking_mode=True)

लिंक करने की कार्रवाइयों के लिए इस्तेमाल किए जाने वाले लिंक वैरिएबल दिखाता है.

पैरामीटर

पैरामीटर ब्यौरा
ज़रूरी है
cc_toolchain, जिसके लिए हम बिल्ड वैरिएबल बना रहे हैं.

सुविधा के कॉन्फ़िगरेशन के लिए क्वेरी करना ज़रूरी है.
None; या depset; डिफ़ॉल्ट है None
उन डायरेक्ट्री का डिपसेट जहां लिंकर, लिंक के समय लाइब्रेरी को खोजेगा.
None; या depset; डिफ़ॉल्ट रूप से यह None
उन डायरेक्ट्री का डिपसेट है जहां लोडर, रनटाइम के दौरान लाइब्रेरी खोजेगा.
None या क्रम; डिफ़ॉल्ट रूप से None है
अन्य लिंक फ़्लैग (linkopts) की सूची.
डिफ़ॉल्ट तौर पर सेट है None
आउटपुट फ़ाइल पाथ ज़रूरी नहीं है.
डिफ़ॉल्ट वैल्यू है None
पैरामीटर फ़ाइल पाथ ज़रूरी नहीं है.
डिफ़ॉल्ट रूप से यह True
लिंकर का इस्तेमाल करते समय 'सही' होता है और संग्रहित करने वाले टूल के तौर पर 'गलत' पर सेट होता है. कॉल करने वाले (कॉलर) की ज़िम्मेदारी यह है कि उसे इस्तेमाल की जाने वाली कार्रवाई के नाम के साथ सिंक किया जाए (is_using_linker = एक्ज़ीक्यूटेबल या डाइनैमिक लाइब्रेरी को लिंक करने के लिए सही, is_use_linker = स्टैटिक लाइब्रेरी को संग्रहित करने के लिए गलत).
डिफ़ॉल्ट रूप से यह False
डाइनैमिक लाइब्रेरी बनाते समय 'सही' होता है. हालांकि, एक्ज़ीक्यूटेबल या स्टैटिक लाइब्रेरी के तौर पर, यह 'गलत' पर सेट होता है. कॉल करने वाले (कॉलर) की ज़िम्मेदारी है कि वह इसे, इस्तेमाल की जा रही कार्रवाई के नाम के साथ सिंक रखे. b/65151735 के ठीक हो जाने पर, यह फ़ील्ड हटा दिया जाएगा.
डिफ़ॉल्ट वैल्यू True है
'गलत है' पर सेट करने पर, bazel 'strip_debug_सिंबोल' वैरिएबल को दिखाएगा. आम तौर पर, इसका इस्तेमाल आउटपुट फ़ाइल से डीबग सिंबल को हटाने के लिए, लिंकर का इस्तेमाल करने के लिए किया जाता है.
डिफ़ॉल्ट वैल्यू False है
सही पर सेट होने पर, 'is_cc_test' वैरिएबल सेट हो जाएगा.
डिफ़ॉल्ट वैल्यू True
इस्तेमाल नहीं की गई है.

create_linker_input

LinkerInput cc_common.create_linker_input(owner, libraries=None, user_link_flags=None, additional_inputs=None)

LinkerInput बनाता है.

पैरामीटर

पैरामीटर ब्यौरा
owner ज़रूरी है
उस टारगेट का लेबल जिसने इस इनपुट में इस्तेमाल की गई सभी फ़ाइलें बनाई हैं.
libraries None; या depset; डिफ़ॉल्ट, None है
LibraryToLink की सूची.
None; या स्ट्रिंग के depset या स्ट्रिंग के क्रम; डिफ़ॉल्ट रूप से, None
उपयोगकर्ता के लिंक के फ़्लैग को स्ट्रिंग के तौर पर पास किया जाता है. [String], [[String]] या depset(String) में से किसी एक का इस्तेमाल करता है. नहीं सलाह दी जाती है, क्योंकि इसे सिर्फ़ साथ काम करने के मकसद से रखा जाता है और डिपसेट को समतल किया जाता है. अगर आपको user_link_flags को अनफ़्लैट किए गए depsets() के ज़रिए लागू करना है, तो उन्हें Linkerइनपुट में रैप करें, ताकि वे आखिर तक एक समान न हों.
additional_inputs None; या depset; डिफ़ॉल्ट None है
लिंक करने की कार्रवाई से जुड़े दूसरे इनपुट के लिए, जैसे: लिंक करने की स्क्रिप्ट.

create_linking_context

LinkingContext cc_common.create_linking_context(linker_inputs=None, libraries_to_link=None, user_link_flags=None, additional_inputs=None)

LinkingContext बनाता है.

पैरामीटर

पैरामीटर ब्यौरा
linker_inputs None; या depset; डिफ़ॉल्ट रूप से None
LinkerInput है.
None; या क्रम; डिफ़ॉल्ट रूप से None
है अब काम नहीं करता. इस पैरामीटर के इस्तेमाल पर रोक लगा दी गई है और इसे जल्द ही हटा दिया जाएगा. कृपया इस पर निर्भर न रहें. यह --+incompatible_require_linker_input_cc_api के साथ बंद है. इस फ़्लैग का इस्तेमाल करके यह पुष्टि करें कि आपका कोड, तुरंत हटाए जाने के लिए इस्तेमाल किया जा सकता है या नहीं.
LibraryToLink की सूची.
None; या क्रम; डिफ़ॉल्ट रूप से None
है अब काम नहीं करता. इस पैरामीटर के इस्तेमाल पर रोक लगा दी गई है और इसे जल्द ही हटा दिया जाएगा. कृपया इस पर निर्भर न रहें. यह --+incompatible_require_linker_input_cc_api के साथ बंद है. इस फ़्लैग का इस्तेमाल करके यह पुष्टि करें कि आपका कोड, तुरंत हटाए जाने के लिए इस्तेमाल किया जा सकता है या नहीं.
स्ट्रिंग के तौर पर पास किए गए, उपयोगकर्ता के लिंक के फ़्लैग की सूची.
additional_inputs None; या क्रम; डिफ़ॉल्ट रूप से None
है अब काम नहीं करता. इस पैरामीटर के इस्तेमाल पर रोक लगा दी गई है और इसे जल्द ही हटा दिया जाएगा. कृपया इस पर निर्भर न रहें. यह --+incompatible_require_linker_input_cc_api के साथ बंद है. इस फ़्लैग का इस्तेमाल करके यह पुष्टि करें कि आपका कोड, तुरंत हटाए जाने के लिए इस्तेमाल किया जा सकता है या नहीं.
लिंक करने की कार्रवाई से जुड़े दूसरे इनपुट के लिए, जैसे कि स्क्रिप्ट लिंक करना.

create_linking_context_from_compilation_outputs

tuple cc_common.create_linking_context_from_compilation_outputs(actions, feature_configuration, cc_toolchain, compilation_outputs, user_link_flags=[], linking_contexts=[], name, language='c++', alwayslink=False, additional_inputs=[], disallow_static_libraries=False, disallow_dynamic_library=False)

इसका इस्तेमाल लाइब्रेरी के ऐसे नियम बनाने के लिए किया जाना चाहिए जो डाउनस्ट्रीम में जानकारी को लागू कर सकें, ताकि बाद में एक टॉप लेवल नियम से लिंक किया जा सके जो एक्ज़ीक्यूटेबल या डाइनैमिक लाइब्रेरी बनाने के लिए ट्रांज़िटिव लिंकिंग का इस्तेमाल करता है. (CcLinkingContext, CcLinkingOutputs) का टपल देता है.

पैरामीटर

पैरामीटर ब्यौरा
actions ज़रूरी है
actions ऑब्जेक्ट.
feature_configuration
feature_configuration क्वेरी करना ज़रूरी है.
cc_toolchain
CcToolchainInfo कंपनी का इस्तेमाल करना ज़रूरी है.
compilation_outputs ज़रूरी है
लिंक करने के लिए ऑब्जेक्ट फ़ाइलों वाले कंपाइलेशन आउटपुट.
डिफ़ॉल्ट के तौर पर सेट है []
लिंक करने के विकल्पों की अन्य सूची.
linking_contexts []
डिपेंडेंसी की लाइब्रेरी डिफ़ॉल्ट पर सेट होती हैं. इन लाइब्रेरी को link() कॉल के आउटपुट आर्टफ़ैक्ट में जोड़ा जाएगा. फिर चाहे वह कोई बाइनरी हो या लाइब्रेरी.
name ज़रूरी है
इसका इस्तेमाल, इस तरीके से बनाए गए ऐक्शन के आउटपुट आर्टफ़ैक्ट को नाम देने के लिए किया जाता है.
language डिफ़ॉल्ट वैल्यू 'c++' है
फ़िलहाल, यह सुविधा सिर्फ़ C++ फ़ॉर्मैट में काम करती है. इस पैरामीटर का इस्तेमाल न करें.
डिफ़ॉल्ट तौर पर यह False पर सेट होता है
यह लाइब्रेरी हमेशा लिंक होनी चाहिए या नहीं.
additional_inputs डिफ़ॉल्ट वैल्यू [] है
लिंक करने की कार्रवाई से जुड़े अन्य इनपुट के लिए, जैसे: स्क्रिप्ट लिंक करना.
disallow_static_libraries डिफ़ॉल्ट तौर पर यह False पर सेट होता है
स्टैटिक लाइब्रेरी बनाई जानी चाहिए या नहीं.
disallow_dynamic_library डिफ़ॉल्ट तौर पर यह False पर सेट होता है
डाइनैमिक लाइब्रेरी बनाई जानी चाहिए या नहीं.

do_not_use_tools_cpp_compiler_present

None cc_common.do_not_use_tools_cpp_compiler_present

इस फ़ील्ड का इस्तेमाल न करें. इसका सिर्फ़ मकसद config_setting.values{'compiler') से config_settings.flag_values{'@bazel_tools//tools/cpp:compiler'} में माइग्रेट करने में मदद करना है

get_environment_variables

dict cc_common.get_environment_variables(feature_configuration, action_name, variables)

दी गई कार्रवाई के लिए सेट किए जाने वाले एनवायरमेंट वैरिएबल दिखाता है.

पैरामीटर

पैरामीटर ब्यौरा
feature_configuration
सुविधा के कॉन्फ़िगरेशन के लिए क्वेरी करना ज़रूरी है.
action_name ज़रूरी है
कार्रवाई का नाम. यह @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) में मौजूद नामों में से एक होना चाहिए
variables ज़रूरी है
टेंप्लेट एक्सपैंशन के लिए इस्तेमाल करने के लिए वैरिएबल बनाएं.

get_execution_requirements

sequence cc_common.get_execution_requirements(feature_configuration, action_name)

दी गई कार्रवाई के लिए, लागू होने की ज़रूरी शर्तें दिखाता है.

पैरामीटर

पैरामीटर ब्यौरा
feature_configuration
सुविधा के कॉन्फ़िगरेशन के लिए क्वेरी करना ज़रूरी है.
action_name ज़रूरी है
कार्रवाई का नाम. यह @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) में मौजूद नामों में से एक होना चाहिए

get_memory_inefficient_command_line

sequence cc_common.get_memory_inefficient_command_line(feature_configuration, action_name, variables)

दी गई कार्रवाई के लिए, कमांड लाइन को फ़्लैट करने वाले फ़्लैग दिखाता है. ऐसा करने के लिए, दिए गए वैरिएबल का इस्तेमाल किया जाता है. नेस्ट किए गए सेट को फ़्लैट करता है और आम तौर पर, इनका इस्तेमाल नहीं किया जाना चाहिए या कम से कम विश्लेषण से बाहर नहीं जाना चाहिए. Args देने वाले मेमोरी कुशल फ़ंक्शन पर काम जारी है.

पैरामीटर

पैरामीटर ब्यौरा
feature_configuration
सुविधा के कॉन्फ़िगरेशन के लिए क्वेरी करना ज़रूरी है.
action_name ज़रूरी है
कार्रवाई का नाम. यह @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) में मौजूद नामों में से एक होना चाहिए
variables ज़रूरी है
टेंप्लेट एक्सपैंशन के लिए इस्तेमाल करने के लिए वैरिएबल बनाएं.

get_tool_for_action

string cc_common.get_tool_for_action(feature_configuration, action_name)

दी गई कार्रवाई के लिए टूल पाथ दिखाता है.

पैरामीटर

पैरामीटर ब्यौरा
feature_configuration
सुविधा के कॉन्फ़िगरेशन के लिए क्वेरी करना ज़रूरी है.
action_name ज़रूरी है
कार्रवाई का नाम. यह @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) में मौजूद नामों में से एक होना चाहिए

is_enabled

bool cc_common.is_enabled(feature_configuration, feature_name)

अगर सुविधा के कॉन्फ़िगरेशन में, दी गई सुविधा चालू है, तो 'सही' दिखाता है.

पैरामीटर

पैरामीटर ब्यौरा
feature_configuration
सुविधा के कॉन्फ़िगरेशन के लिए क्वेरी करना ज़रूरी है.
feature_name ज़रूरी है
सुविधा का नाम.

CcLinkingOutputs cc_common.link(actions, feature_configuration, cc_toolchain, compilation_outputs=None, user_link_flags=[], linking_contexts=[], name, language='c++', output_type='executable', link_deps_statically=True, stamp=0, additional_inputs=[], additional_outputs=unbound)

इसका इस्तेमाल C++ ट्रांज़िटिव लिंकिंग के लिए किया जाना चाहिए.

पैरामीटर

पैरामीटर ब्यौरा
actions ज़रूरी है
actions ऑब्जेक्ट.
feature_configuration
feature_configuration क्वेरी करना ज़रूरी है.
cc_toolchain
CcToolchainInfo कंपनी का इस्तेमाल करना ज़रूरी है.
compilation_outputs CcCompilationOutputs; या None; डिफ़ॉल्ट रूप से None
है कंपाइलेशन आउटपुट, जिनमें लिंक की जाने वाली ऑब्जेक्ट फ़ाइलें होती हैं.
डिफ़ॉल्ट सेटिंग यह है: []
लिंकर के विकल्पों की अन्य सूची.
linking_contexts डिफ़ॉल्ट सेटिंग [] है
इस नियम से जनरेट किए गए लिंक के कॉन्टेक्स्ट में जोड़ने के लिए, डिपेंडेंसी से कॉन्टेक्स्ट लिंक करना.
name ज़रूरी है
इसका इस्तेमाल, इस तरीके से बनाए गए ऐक्शन के आउटपुट आर्टफ़ैक्ट को नाम देने के लिए किया जाता है.
language डिफ़ॉल्ट वैल्यू 'c++' है
फ़िलहाल, यह सुविधा सिर्फ़ C++ फ़ॉर्मैट में काम करती है. इस पैरामीटर का इस्तेमाल न करें.
output_type डिफ़ॉल्ट वैल्यू 'executable' है
यह 'executable' या 'Dynamic_library' हो सकता है.
डिफ़ॉल्ट रूप से, True पर सेट होता है
डिपेंडेंसी को स्टैटिक तरीके से लिंक करने के लिए, 'सही' और डाइनैमिक रूप से 'गलत' पर सेट होता है.
stamp डिफ़ॉल्ट 0 है
अगर out_type 'executable' है, तो लिंक किए गए एक्ज़ीक्यूटेबल में बिल्ड की जानकारी शामिल करनी है या नहीं. अगर यह एक समस्या है, तो बिल्ड की जानकारी हमेशा शामिल की जाती है. अगर इसका मान 0 है, तो बिल्ड की डिफ़ॉल्ट जानकारी को हमेशा शामिल नहीं किया जाता है. अगर -1 है, तो डिफ़ॉल्ट कार्रवाई का इस्तेमाल किया जाता है, जिसे --[no]stamp फ़्लैग से बदला जा सकता है. जांच के नियमों के लिए एक्ज़ीक्यूटेबल आउटपुट जनरेट करते समय, इसे सेट नहीं (या 0 पर सेट करना) होना चाहिए.
additional_inputs क्रम या depset; डिफ़ॉल्ट तौर पर यह []
पर सेट होता है. लिंक करने की कार्रवाई से जुड़े दूसरे इनपुट के लिए, उदाहरण के लिए: लिंक करने की स्क्रिप्ट.
additional_outputs क्रम; डिफ़ॉल्ट unbound है
लिंकिंग कार्रवाई के अतिरिक्त आउटपुट के लिए, उदाहरण: मैप फ़ाइलें.

merge_compilation_contexts

CompilationContext cc_common.merge_compilation_contexts(compilation_contexts=[])

एक से ज़्यादा CompilationContexts को एक में मर्ज कर देता है.

पैरामीटर

पैरामीटर ब्यौरा
compilation_contexts [] डिफ़ॉल्ट पर सेट है
मर्ज किए जाने वाले CompilationContexts की सूची. हर कॉन्टेक्स्ट के हेडर को, डोमेन नेम देने वाली कंपनी के डायरेक्ट फ़ील्ड से एक्सपोर्ट किया जाएगा.

merge_compilation_outputs

CcCompilationOutputs cc_common.merge_compilation_outputs(compilation_outputs=[])

कंपाइलेशन आउटपुट मर्ज करें.

पैरामीटर

पैरामीटर ब्यौरा
compilation_outputs डिफ़ॉल्ट वैल्यू []
है