我正在尝试使用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?
答案 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