Mac OS X 10.8和llvm/clang 3.3通过自制程序

ova*_*nes 5 macos homebrew upgrade llvm clang

我在带有LLVM 3.2的Mac OS X 10.8上安装了最新版本的XCode.现在我想切换到llvm/clang 3.3.

在我目前的项目中,我使用CMake和clang 3.2以及libc ++,它们运行正常.

现在我以为我可以用自制软件切换.所以我做的是发出以下命令:

brew install llvm --with-clang --with-asan
Run Code Online (Sandbox Code Playgroud)

这个构建了新的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++ ../
Run Code Online (Sandbox Code Playgroud)

成功,我的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
Run Code Online (Sandbox Code Playgroud)

但是,如果我开始构建我的项目,我收到一个错误:


[  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.
Run Code Online (Sandbox Code Playgroud)

所以很明显找不到标准的标题,其中发现了clang 3.2.什么可能导致这个问题?

备注: 我认为我的问题是brew使用libstdc ++而不是libc ++构建llvm/clang.有什么办法可以强迫它使用libc ++吗?或者有没有其他简单的方法来升级OS X上的clang并使用libc ++?

Pau*_* II 2

添加-stdlib=libc++到构建参数以将 clang 配置为使用 libc++。