2011-12-13 16 views
54

इस प्रश्न का उत्तर Why can't clang with libc++ in c++0x mode link this boost::program_options example? कहता है "आपको clang ++ -stdlib = libC++ का उपयोग करके बढ़ावा देने की आवश्यकता है।"क्लैंग ++/libC++ के साथ बूस्ट को संकलित/लिंक कैसे करें?

मैं मैकोज शेर का उपयोग क्लैंग v3.0 के साथ कर रहा हूं। मैं क्लैंग का उपयोग करके बूस्ट v1.48.0 कैसे बना सकता हूं और इसे libC++ से लिंक कर सकता हूं?

अद्यतन:

using clang-darwin 

... जो बजाय का बजना जीसीसी से बूस्ट का निर्माण करेगा: मैं निम्नलिखित के साथ एक उपयोगकर्ता के config.jam फ़ाइल बनाई है। मैं libstdC++ के बजाय libC++ से कैसे लिंक करूं?

उत्तर

85

मुझे नहीं पता था कि यह कैसे करें। लेकिन चारों ओर here poking, और परीक्षण और त्रुटि के बाद:

$ ./b2 clean 
$ ./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" 

आप चेतावनी के बहुत सारे मिल जाएगा। और सिग्नल लाइब्रेरी LWG 2059 के कारण निर्माण करने में विफल रहेगी। लेकिन अन्यथा मैं सोचता हूं यह काम करता है।

+2

हाँ, यह काम करता है! धन्यवाद। –

+0

बस जोड़ने के लिए, boost :: signals2 ('#include ') में :: सिग्नल को बढ़ावा देने के लिए एक समान एपीआई है और केवल हेडर है, इसलिए सिग्नल बनाने में सक्षम होने के कारण इतना बुरा नहीं हो सकता है। –

+0

क्या यह सिर्फ बढ़ावा देता है :: सिग्नल नहीं बनाया जा रहा है? मुझे लगता है कि पूर्ण –

15

एक अन्य विकल्प Homebrew उपयोग करने के लिए है: पर सभी विकल्प का उपयोग

brew install boost --c++11 

जानकारी प्राप्त करने के लिए:

brew info boost 
+2

के लिए काम नहीं करता है क्या यह लिंक 'libstdC++' के बजाय 'libC++' के खिलाफ है? –

+0

अगर क्लैंग उपलब्ध है तो यह libC++ के साथ लिंक है। –

+1

मैंने "ब्रू इंस्टॉल बूस्ट - सी ++ 11" के बाद "otool -L /usr/local/Cellar/boost/1.57.0/lib/libboost_regex-mt.dylib" चलाया और पुष्टि कर सकते हैं कि बूस्ट अब इसके खिलाफ लिंक कर रहा है libC++। धन्यवाद! –

संबंधित मुद्दे