当我尝试运行CMake生成的makefile来编译程序时,出现以下错误:
C ++ 98模式不支持基于范围的循环。
我尝试添加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)(在定义目标之前)是最佳方法。
CXX_STANDARD做不上MSVC的工作,所以基本上你必须退回到target_compile_features,如果你想要的东西,跨平台工作。
SET(CMAKE_CXX_FLAGS "-std=c++0x")工程对我来说很好,因此CMakeLists文件中的其他地方可能存在问题。确保以后不要意外覆盖CMAKE_CXX_FLAGS的内容。