错误:LLVM版本5.1 </atomic>中未实现<atomic>

时间:2014-07-21 21:42:23

标签: c++11 cmake llvm osx-mountain-lion atomic

我正在尝试使用cmake编译libcxxabi,并遇到问题。我相信这是因为我没有安装llvm的单独副本llvm-config。所以我已经检查了llvm,我正在尝试build that with cmake。我收到错误:

CMake Error at cmake/modules/HandleLLVMOptions.cmake:37 (message):
  Host Clang must be able to find libstdc++4.7 or newer!

和cmake / modules / HandleLLVMOptions.cmake:37实际上是一个块:

check_cxx_source_compiles("
#include <atomic>
std::atomic<float> x(0.0f);
int main() { return (float)x; }"
    LLVM_NO_OLD_LIBSTDCXX)
if(NOT LLVM_NO_OLD_LIBSTDCXX)
    message(FATAL_ERROR "Host Clang must be able to find libstdc++4.7 or newer!")
endif()

如果我尝试使用编译器标志-std=c++0x(在cmake文件中更高的位置)编译3个线程,我会收到错误:

atomic.cpp:1:10: fatal error: 'atomic' file not found
#include <atomic>
         ^
1 error generated.

我怎么不支持c ++ 11原子?我正在运行OSX 10.8.5,从10.8.4升级,XCode版本5.1.1和clang ++ 5.1(clang-503.0.40)(基于LLVM 3.4svn)。我没有选择在应用商店中升级xcode,也没有开发人员工具。我需要重新安装XCode,还是升级到Mavericks?

2 个答案:

答案 0 :(得分:3)

我需要检查所有LLVM并将其他命令行参数传递给CMake。

svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
cd ../projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
cd ..
mkdir build
cd build
cmake .. -DLLVM_ENABLE_LIBCXX=ON
make
make install

答案 1 :(得分:0)

与xCode 6.4有同样的问题。在一个简单的helloWorld程序中使用atomic时它可以工作,但是当使用CMake生成的项目时,我有“#error未实现”

看来CMake需要特殊的标志才能在mac上启用c ++ 11 ...所以,确实(几乎......替换if(UNIX)by if(APPLE))如kitware所示:

https://cmake.org/Wiki/CMake/Tutorials/C%2B%2B11Flags

如果链接有一天停止工作....

cmake_minimum_required(VERSION 2.6)

PROJECT(Test)

if(UNIX)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=gnu++0x")
endif()

# MSVC does not require any special flags