2011-12-13 107 views
54

此問題的答案Why can't clang with libc++ in c++0x mode link this boost::program_options example?指出「您需要使用clang ++ -stdlib = libC++重建提升」。如何使用clang ++/libC++編譯/鏈接Boost?

我正在使用MacOS Lion和clang v3.0。如何使用clang構建Boost v1.48.0並將其與libC++鏈接?

更新:我創建了一個用戶config.jam中文件具有以下內容:

using clang-darwin 

...這將建立鏗鏘而不是gcc提升。我如何鏈接libC++而不是libstdC++?

回答

85

我不知道如何做到這一點。但閒逛here,並經過反覆試驗:

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

你會得到很多的警告。由於LWG 2059,信號庫將無法建立。但除此之外,我認爲它的作品

+2

是的,它的作品!謝謝。 –

+0

只需要添加boost :: signals2('#include ')就有一個類似於boost :: signal的API,並且只是頭文件,所以不能構建信號可能不那麼糟糕。 –

+0

它只是提升::信號沒有建立?我覺得我錯過了很多變種,當建立完成 –

15

另一種選擇是使用Homebrew

brew install boost --c++11 

要在所有選項的使用得到信息:

brew info boost 
+2

此鏈接是否針對'libC++'而不是'libstdC++'? –

+0

如果clang可用,它與libC++鏈接。 –

+1

我運行了「brew install boost --C++ 11」,後面跟着「otool -L /usr/local/Cellar/boost/1.57.0/lib/libboost_regex-mt.dylib」,並且可以確認Boost現在正在鏈接的libC++。謝謝! –