cc_common

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

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

पैसे चुकाकर बने सदस्य

action_is_enabled

bool cc_common.action_is_enabled(feature_configuration, action_name)

सुविधा के कॉन्फ़िगरेशन में, दिए गए action_config के चालू होने पर True वैल्यू मिलती है.

पैरामीटर

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

CcToolchainInfo

Provider cc_common.CcToolchainInfo

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

configure_features

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

सुविधा_कॉन्फ़िगरेशन इंस्टेंस बनाता है. 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, cc_target_os=None)

CcToolchainConfigInfo सेवा देने वाली कंपनी बनाता है

पैरामीटर

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

तर्क:

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

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

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

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

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

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

provides: इस सुविधा के नाम से मेल न खाने वाले नामों की सूची.

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

तर्क:

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

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

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

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

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

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

तर्क:

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

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

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

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

कंपाइलर जिस पाथ का इस्तेमाल करता है उसे '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").
compiler ज़रूरी है
कंपाइलर वर्शन स्ट्रिंग (उदाहरण के लिए, "gcc-4.1.1").
abi_version string; या None; डिफ़ॉल्ट तौर पर None है
abi, जो gcc वर्शन है. E.g.: "जीसीसी-3.4"
abi_libc_version string; या None; डिफ़ॉल्ट तौर पर None है
यह glibc वर्शन है जो abi का इस्तेमाल कर रहा है.
tool_paths []
टूल लोकेशन डिफ़ॉल्ट है.

तर्क:

name: टूल का नाम.

path: टूल की लोकेशन; यह ऐब्सलूट पाथ हो सकता है (नॉन हर्मेटिक टूलचेन के मामले में) या यह cc_toolchain के पैकेज से जुड़ा पाथ हो सकता है.

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

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_मेमोरी_inefficiency_command_line से जनरेट की गई कमांड लाइन के आखिर में जोड़े जाने के लिए, Source_file को पास करें. ऐसा करने पर, टूलचेन लेखक के पास यह तय करने का अधिकार होता है कि वह कंपाइलर फ़्लैग सही तरीके से तय कर सके और उसकी जगह तय कर सके.
output_file डिफ़ॉल्ट तौर पर, यह None
कंपाइलेशन की वैकल्पिक आउटपुट फ़ाइल होती है. कृपया cc_Common.get_3_inefficiency_command_line से जनरेट की गई कमांड लाइन के आखिर में जोड़े जाने के लिए, exit_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
प्रीप्रोसेसर का Depset तय होता है.
thinlto_index string; या None; डिफ़ॉल्ट रूप से None
LTO इंडेक्स फ़ाइल पाथ है.
thinlto_input_bitcode_file string; या None; डिफ़ॉल्ट तौर पर None
बिटकोड फ़ाइल होती है, जिसे LTO बैकएंड में इनपुट किया जाता है.
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, def_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 है
पैरामीटर फ़ाइल का पाथ ज़रूरी नहीं है.
डिफ़ॉल्ट तौर पर यह None पर सेट होता है
.def फ़ाइल पाथ देना ज़रूरी नहीं है.
डिफ़ॉल्ट तौर पर यह True
लिंकर का इस्तेमाल करते समय 'सही' होता है, संग्रहित करने के दौरान 'गलत' पर सेट होता है. कॉल करने वाले (कॉलर) इसे इस्तेमाल की गई कार्रवाई के नाम के साथ सिंक रखने की ज़िम्मेदारी है (is_using_linker = एक्ज़ीक्यूटेबल या डाइनैमिक लाइब्रेरी को लिंक करने के लिए सही, is_use_linker = स्टैटिक लाइब्रेरी को संग्रहित करने के लिए गलत).
डिफ़ॉल्ट तौर पर यह False
डाइनैमिक लाइब्रेरी बनाते समय 'सही' होता है. वहीं, एक्ज़ीक्यूटेबल या स्टैटिक लाइब्रेरी के दौरान यह 'गलत' पर सेट होता है. कॉल करने वाले (कॉलर) की ज़िम्मेदारी यह है कि उसे, इस्तेमाल की जाने वाली कार्रवाई के नाम के साथ सिंक रखा जाए. b/65151735 के ठीक हो जाने पर, यह फ़ील्ड हटा दिया जाएगा.
डिफ़ॉल्ट तौर पर True है
'गलत है' पर सेट करने पर, bazel 'strip_debug_symbols' वैरिएबल को दिखाता है. आम तौर पर, इसका इस्तेमाल लिंकर का इस्तेमाल करके, आउटपुट फ़ाइल से डीबग सिंबल को हटाने के लिए किया जाता है.
डिफ़ॉल्ट वैल्यू 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() के ज़रिए लागू करना है, तो उन्हें LinkerInput में रैप करें, ताकि वे आखिर तक फ़्लैट न हों.
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 पर सेट होता है
अगर exit_type 'एक्ज़ीक्यूबल' पर सेट किया जाता है, तो लिंक किए गए एक्ज़ीक्यूटेबल में बिल्ड की जानकारी शामिल करनी है या नहीं. अगर 1 है, तो बिल्ड की जानकारी हमेशा शामिल की जाती है. अगर वैल्यू 0 है (बिल्ड की डिफ़ॉल्ट जानकारी हमेशा शामिल नहीं की जाती है. अगर -1, डिफ़ॉल्ट व्यवहार का इस्तेमाल करता है, जिसे --[no]स्टैंप फ़्लैग से बदला जा सकता है. जांच के नियमों के लिए एक्ज़ीक्यूटेबल आउटपुट जनरेट करते समय, इसे सेट नहीं (या 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 डिफ़ॉल्ट वैल्यू []
है