2012-05-03 13 views
5

में सी ++ 11 के साथ कुछ परेशानी हो रही है। मैं एक मैक ओएस एक्स शेर उपयोगकर्ता हूं जो सी ++ के लिए एक्सकोड का उपयोग करता है, और ऐसा लगता है कि एक्सकोड के लिए कोई अपडेट उपलब्ध नहीं है। मैं सी ++ 11-अनन्य कोड को संकलित करने में सक्षम नहीं दिखता, लेकिन किसी भी कारण से, मैंने सोचा कि ऐप्पल को सी ++ 11 बहुत अधिक लागू किया गया है। और हाँ, मुझे कमांड लाइन टूल्स के लिए समर्थन है।मुझे एक्सकोड

फिर फिर, यह सिर्फ मुझे हो सकता है। यदि हां, तो क्या कोई ऐसा आईडीई है जो सी ++ 11 का समर्थन करता है, या अपग्रेड करने का कोई तरीका है?

+4

एक्सकोड 4.2 क्लैंग और क्लैंग के साथ जहाजों को आंशिक रूप से सी ++ 11 का समर्थन करता है। आप बिल्ड विकल्पों में क्लैंग पर स्विच कर सकते हैं। –

+0

आप मैकपोर्ट्स का उपयोग कर सकते हैं, वे सभी नवीनतम जीसीसी संस्करणों को भेजते हैं http://www.macports.org/ – inf

उत्तर

8

मैं Xcode का उपयोग करें और निम्न सेटिंग्स सेट:

अंत में, आप सी ++ 11 एसटीएल सुविधाओं का उपयोग करना चाहते हैं (जैसे std::unordered_map) आप libC++ एसटीएल उपयोग करने की आवश्यकता C++ भाषा बोली: सी ++ 11 या जीएनयू ++ 11

सी ++ standart लाइब्रेरी: libC++ (LLVM सी ++ standart सी ++ 11 समर्थन के साथ पुस्तकालय)

Xcode संस्करण: 4.3.2

XCode project settings

+0

ऐसा लगता है कि काम करता है! धन्यवाद! – Whovian

+0

एलएलवीएम कंपाइलर का चयन करना भी न भूलें। – sbooth

+2

मुझे std lib जोड़ने के साथ समस्या है। अगर मैं libC++ (सी ++ 11 समर्थन के साथ एलएलवीएम सी ++ मानक लाइब्रेरी) चुनता हूं तो लिंकर "std :: string :: find (char, unsigned long) const" और अन्य प्रतीकों को लिंक नहीं कर सकता है, अगर मैं libstC++ (GNU C++ स्टैंडअर्ट लाइब्रेरी) चुनता हूं तो हेडर में कंपाइलर त्रुटियां हैं "std :: move नहीं मिल सकती"। मैं क्या गलत कर रहा हूं? इसे कैसे हल किया जा सकता है? धन्यवाद। – BergP

3

यदि आप एक्सकोड 4.3 का उपयोग कर रहे हैं तो सी ++ 11 सुविधाओं का उपयोग करने के लिए आपको कई प्रासंगिक परियोजना सेटिंग्स की आवश्यकता है। सबसे पहले क्लैंग कंपाइलर का उपयोग करना है। जैसे

GCC_VERSION = com.apple.compilers.llvm.clang.1_0 
अपने .xcconfig में

कुछ यह सेट हो जाएगा, या आप जीयूआई उपयोग कर सकते हैं।

इसके बाद, आप LLVM बताने के लिए जो सी ++ मानक का उपयोग करने की जरूरत है:

CLANG_CXX_LANGUAGE_STANDARD = gnu++11 

इस के लिए आधार रेंज, प्रत्यायोजित कंस्ट्रक्टर्स, आदि उपलब्ध की तरह भाषा सुविधाओं कर देगा।

CLANG_CXX_LIBRARY = libc++ 
+0

मुझे वास्तव में खेद है, मैं बहुत नया हूं, लेकिन मैं यह कैसे कर सकता हूं? जाहिर है, वे एलएलवीएम या इस तरह के कुछ के लिए कमांड हैं, लेकिन मुझे नहीं पता कि क्या करना है। – Whovian

+0

यदि आप .xcconfig फ़ाइलों का उपयोग नहीं कर रहे हैं तो आप एक्सकोड के इंस्पेक्टर में अपनी प्रोजेक्ट फ़ाइल का चयन कर सकते हैं और आपको अलेक्जेंडर द्वारा पोस्ट किए गए विकल्पों की एक सूची दिखाई देनी चाहिए। – sbooth

0

XCode 5/opencv 2.4.9 पर, मैं चुन सकते हैं:

XCode settings

और यह त्रुटि के बिना बनाता है। यदि मैं सी ++ भाषा बोली निर्दिष्ट किए बिना libC++ सेट करता हूं तो मुझे ओपी