10

OS X 1.8

CMAKE 2.8.9

クラン$ clang -v Apple clang version 4.0 (tags/Apple/clang-421.10.60) (based on LLVM 3.1svn) Target: x86_64-apple-darwin12.0.0 Thread model: posix

CMAKELists.txt:

cmake_minimum_required (VERSION 2.8.9)
project (Test)
add_executable(Test main.cpp)

main.cpp

//Create a C++11 thread from the main program
#include <iostream>
#include <thread>

//This function will be called from a thread
void call_from_thread() {
    std::cout << "Hello, World!" << std::endl;
}

int main() {
    //Launch a thread
    std::thread t1(call_from_thread);

    //Join the thread with the main thread
    t1.join();

    return 0;
}

私のエラー:

$ make
Scanning dependencies of target Test
[100%] Building CXX object CMakeFiles/Test.dir/main.cpp.o
test/main.cpp:4:10: fatal error: 'thread' file not found
#include <thread>
     ^
1 error generated.
make[2]: *** [CMakeFiles/Test.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Test.dir/all] Error 2
make: *** [all] Error 2

Clang のバージョンは C++v11 の機能をサポートしていないのでしょうか? この同じプログラムは、OSX 10.8 の gcc-4.7.1 でコンパイルされます

この参照は、それが機能するはずだと言っていますhttp://www.cpprocks.com/a-comparison-of-c11-language-support-in-vs2012-g-4-7-and-clang-3-1/

私は何を間違っていますか?

4

1 に答える 1

26

C++11 サポートを完全に有効にするには、コンパイラにフラグ-std=c++11とフラグを指定する必要があります。-stdlib=libc++これは、ccmake (拡張モードをオンにして ( ) をにt設定)、または CMakeLists.txt 内の同等のディレクティブを使用して行うことができます。CMAKE_CXX_FLAGS-std=c++11 -stdlib=libc++

cmake_minimum_required(VERSION 2.8.9)
set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")
project(Test)
add_executable(Test main.cpp)
于 2012-08-15T15:56:24.343 に答える