Cuando intento ejecutar un archivo MAKE generado por CMake para compilar mi programa, aparece el error que
el rango basado en bucles no se admite en el modo C ++ 98.
Traté de agregar add_definitions(-std=c++0x)
a mi CMakeLists.txt
, pero no me ayudó.
Intenté esto también:
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-std=gnu++0x)
endif()
Cuando lo hago g++ --version
, obtengo:
g ++ (Ubuntu / Linaro 4.6.1-9ubuntu3) 4.6.1
También lo he intentado SET(CMAKE_CXX_FLAGS "-std=c++0x")
, lo que tampoco funciona.
No entiendo cómo puedo activar las funciones de C ++ 11 usando CMake.
set(CMAKE_CXX_STANDARD 11)
(antes de definir el objetivo) es la mejor manera.
CXX_STANDARD
lo hace no trabajo en MSVC, así que básicamente tiene que caer de nuevo a target_compile_features
si quieres algo que funciona multiplataforma.
SET(CMAKE_CXX_FLAGS "-std=c++0x")
bien funciona para mí, por lo que es probablemente un problema en otro lugar en el archivo CMakeLists. Asegúrese de no sobrescribir accidentalmente el contenido de CMAKE_CXX_FLAGS más adelante.