【发布时间】:2017-09-14 08:34:53
【问题描述】:
我使用的是 cmake 3.9.2,我的 CMakeLists.txt 中有以下几行:
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall")
我也使用 clang 4.0 作为我的编译器,我的操作系统是 Ubuntu Trusty。在安装 clang 时,我添加了以下存储库:
deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main
deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main
ppa:ubuntu-toolchain-r/test
并运行命令:
# apt-get install clang-4.0 libstdc++6 libc++1
毕竟我仍然收到错误
error: no member named 'make_unique' in namespace 'std'
同时在我的 OS X 10.11 上,一切都可以顺利构建和运行。在 Ubuntu Zesty 上我也没有任何问题。我在 Ubuntu Trusty 上做错了什么?
【问题讨论】:
-
包括
<memory>? -
@RickAstley 是的,包括在内
-
您的 CXX_FLAGS 很可能有问题。我的猜测是它们链接到 C++11(即 -std=c++11)而不是 C++14(即 -std=c++14),其中引入了 std::make_unique。
-
@101010 我跑了
make VERBOSE=1,我得到了/usr/bin/clang++-4.0 -I/project_path/../. -g -Wall -stdlib=libstdc++ -std=c++14 -O3 -DNDEBUG -std=gnu++14 -m64 -o CMakeFiles/.../file.cpp -
@CaptainRR 删除
-std=gnu++14和-o放错地方