ग्नू मेक में CPPFLAGS और CXXFLAGS के बीच अंतर


139

GNU मेक में CPPFLAGS और CXXFLAGS में क्या अंतर है?


2
आप अपने पूर्वनिर्धारित चर और नियम डेटाबेस को मंगलाचरण का उपयोग करके प्रिंट करवा सकते हैंmake -p
डेनियल पल्लेस्त्रेली

जवाबों:


210

CPPFLAGSसी पी रे पी रोशनर के लिए झंडे के लिए माना जाता है ; CXXFLAGSसी + + संकलक के लिए झंडे के लिए है।

बनाने में डिफ़ॉल्ट नियम (मेरी मशीन पर, किसी भी दर पर) CPPFLAGSबस सब कुछ के बारे में गुजरता है, CFLAGSकेवल C को संकलित और लिंक करते समय पारित किया जाता है, और CXXFLAGSकेवल C ++ को संकलित और लिंक करते समय पारित किया जाता है।


1
यह एक सामान्य अभ्यास की तरह लगता है कि C ++ के संकलन के दौरान CFLAGS भी पास हो जाएगा?
बैयान हुआंग

21
हा। मैं समझ गया! xएक है +यह के पक्ष में कर दिया क्योंकि C++FLAGSसंकलक को उड़ाने होगा। ... मैं पार्टी में देरी से पहुंचा हो सकता है, लेकिन यह गलत पार्टी में समय पर पहुंचने से बेहतर है।
जैक्सनक्रा

@BaiyanHuang मैं इसके बारे में सामान्य या नहीं के रूप में सोचना नहीं होगा; आप दोनों सम्मेलनों में भाग लेंगे। आपको यह जानना होगा कि आपका वर्तमान सेटअप क्या कर रहा है।
जेम्स मूर

1
CPPFLAGSहै नहीं के लिए सी पी lus पी lus लेकिन CXXFLAGS है।
शिज़ेन

सच लेकिन भयानक। ऐसा महसूस होता है कि हम 80 के दशक में फंस गए हैं।
शुहालो

34

डिफ़ॉल्ट रूप से, CPPFLAGSC प्रीप्रोसेसर CXXFLAGSको दिया जाएगा , जबकि C ++ कंपाइलर को दिया जाएगा।

जीएनयू बनाओ मैनुअल (देखें इस तरह सवाल के लिए एक अच्छा स्रोत है अंतर्निहित चर )।


27
जब मैं यह एक ही सवाल था मैं मैनुअल पर सही घूर रहा था। मैंने CPPFLAGS को स्टैकओवरफ़्लो में टाइप किया और मैनुअल खोजने की तुलना में उत्तर बहुत जल्दी मिला।
डेन हुक

18

CPPFLAGS C प्रीप्रोसेसर के लिए हैं, जबकि CXXFLAGS C ++ कंपाइलर के लिए हैं।

देखें यहाँ


0

डिफ़ॉल्ट रूप से, वे किसी चीज़ पर सेट हैं।

व्यवहार में, आपको यह जानना होगा कि हर एक परियोजना क्या करती है। वस्तुतः कोई भी उन डिफ़ॉल्ट का उपयोग नहीं करता है जो मेक इन में निर्मित होते हैं, और यदि आप उदाहरण के लिए भरोसा करते हैं, तो CPPFLAGS का अर्थ है "सी प्रीप्रोसेसर को झंडे"। बजाय। और क्या सीएफएलएजीएस ध्वज सी ++ संकलित लाइनों को पारित किया जाता है? कभी कभी। हर बार नहीं। आदि, आदि।


1
कुछ परियोजनाएं CPPFLAGS का उपयोग "c ++ झंडे" से करने के लिए करती हैं, लेकिन वे परियोजनाएं लगभग निश्चित रूप से मानक की अनदेखी से ऐसा कर रही हैं, और यह बेहतर होगा कि वे CXXFLAGS का उपयोग करें।
स्कोर_उंडर

@Score_Under मैं आपसे असहमत नहीं हूं, लेकिन दुनिया उन परियोजनाओं से भरी हुई है जो इस बात की कम परवाह नहीं कर सकती कि किसी को क्या लगता है कि मानक क्या है। आपको हमेशा जांच करनी होगी।
जेम्स मूर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.