4

我在 Visual Studio 2012 中开发了一些类,这些类大量使用了 C++11 特性,还使用了新的 std 特性,如线程和互斥锁。原因是平台独立。尝试将代码移植到 OSX 时,Xcode 编译器 5.0 无法打开以下内容:

#include <chrono>
#include <thread>
#include <functional>
#include <mutex> 

我已经将构建设置切换到 C++11 并搜索了包含的 usr/include 路径。请不要建议提升,因为我试图从我的项目中消除它。

4

2 回答 2

6

您同时需要-std=c++11-stdlib=libc++

$ cat cpptest.cpp
#include <chrono>
#include <thread>
#include <functional>
#include <mutex>

int main() {
    return 0;
}

$ clang -o cpptest -std=c++11 -stdlib=libc++ cpptest.cpp
$ echo $?
0
于 2013-09-30T08:24:44.327 回答
6

假设您使用的是 Xcode,则不需要为 指定显式标志clang或添加构建路径/usr/include,因为这是由 IDE 为您完成的。您需要做的是打开项目设置 -> 构建设置并将C++ 语言方言设置为C++11,将C++ 标准库设置为libc++(支持 C++11 的 LLVM C++ 标准库)

于 2013-09-30T08:27:18.280 回答