我在我的Mac OS X 10.8上安装了最新版本的XCode和LLVM 3.2。现在我想切换到llvm/clang 3.3。
在我的当前项目中,我使用与clang 3.2和libc++一起使用的CMake,它们可以正常工作。
现在我想使用homebrew进行切换。所以我发出了以下命令:
brew install llvm --with-clang --with-asan
我已经编译了新的clang,并将其更新到/usr/local/bin目录下。
使用以下参数运行cmake:
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=/usr/local/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/bin/clang++ ../
成功了,我的CMake输出如下:
-- Compiler: Clang
-- CXX_FLAGS: -Wall -std=c++11 -stdlib=libc++
-- Boost version: 1.53.0
-- adding include directory: /usr/local/include
-- adding include directory: /usr/local/include
-- adding include directory: /usr/local/include
-- adding include directory: /usr/local/include
-- Boost version: 1.53.0
-- Found the following Boost libraries:
-- filesystem
-- system
-- exception
-- Boost version: 1.53.0
-- Found the following Boost libraries:
-- unit_test_framework
-- thread
-- Configuring done
-- Generating done
但是,如果我开始构建我的项目,我会收到一个错误信息:
[ 2%] Building CXX object code/CMakeFiles/.../resource.cpp.o
In file included from /Users/.../code/net/resource.cpp:1:
/Users/.../resource.hpp:6:10: fatal error: 'string' file not found
#include <string>
^
1 error generated.
很明显,标准头文件未找到,而clang 3.2中已经找到了。这个问题可能是什么原因引起的呢?
备注:我认为我的问题在于brew使用libstdc++而不是libc++来构建llvm/clang。有没有办法强制使用libc++?或者在OS X上升级clang并使用libc++的其他简单方法?