当我尝试运行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的内容。