当我尝试运行CMake生成的makefile以编译我的程序时,我收到以下错误信息:
在C++ 98模式下不支持基于范围的for循环。
我尝试将add_definitions(-std=c++0x)
添加到我的CMakeLists.txt
文件中,但没有起作用。
我也尝试了这个:
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-std=gnu++0x)
endif()
当我执行 g++ --version
命令时,会得到以下输出:
g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
我也尝试过 SET(CMAKE_CXX_FLAGS "-std=c++0x")
,但它也不起作用。
我不明白如何在使用 CMake 时激活 C++11 特性。
set(CMAKE_CXX_STANDARD 11)
(在定义目标之前)是最好的方法。 - emlaiCXX_STANDARD
在 MSVC 上不起作用,因此如果您想要跨平台的功能,基本上必须退回到target_compile_features
。 - Ela782