将“-std=c++11”传递给CMakeLists?

16

我刚安装了Qt Creator并使用C++11语法。

不幸的是,当我尝试构建我的项目时,出现了以下错误:

/usr/include/c++/4.8/bits/c++0x_warning.h:32: error:
      #error This file requires compiler and library support for the ISO C++ 2011
             standard. This support is currently experimental, and must be
             enabled with the -std=c++11 or -std=gnu++11 compiler options.
      #error This file requires compiler and library support for the \
       ^

然后出现了一堆错误,比如 "tuple not a member of std"。

我的CMakeLists.txt文件包含:

project(routing_tests)
set(QMAKE_CXXFLAGS "-std=c++11")
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})

编辑:小型测试案例展示问题 https://gist.github.com/anonymous/8171073


等一下,QMake 还是 CMake? - drescherjm
@drescherjm:这正是我回答的重点。 - László Papp
1
如果不使用CMake,就需要设置(CMAKE_CXXFLAGS "-std=c++11")。 - drescherjm
啊。直到现在我的屏幕才显示出你的答案。 - drescherjm
显示剩余2条评论
1个回答

36

main.cpp

#include <iostream>
#include <tuple>

int main() {
    auto foo = std::make_tuple("bar", "foo", "can");
    std::cout << std::get<0>(foo) << std::get<1>(foo) << std::get<2>(foo);
} 

CMakeLists.txt

project(tuple_tests)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# C++14: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y")
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})

啊,所以是 CMAKE 而不是 GMAKE。 - A T
1
@AT:你需要重新运行cmake。 - László Papp
不支持c++11的旧版gcc?那会忽略参数还是报错? - drescherjm
7
请尝试添加add_definitions("-std=c++11") - László Papp
1
@drescherjm:我想AT只是想编辑我的答案,但不幸被拒绝了。不过没关系,因为要点已经指出,问题现在得到解决了。 - László Papp
显示剩余12条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接