Lorsque j'essaie d'exécuter un makefile généré par CMake pour compiler mon programme, j'obtiens l'erreur
La plage basée sur les boucles n'est pas prise en charge en mode C ++ 98.
J'ai essayé d' ajouter add_definitions(-std=c++0x)
à mon CMakeLists.txt
, mais il n'a pas aidé.
J'ai aussi essayé ça:
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-std=gnu++0x)
endif()
Quand je le fais g++ --version
, je reçois:
g ++ (Ubuntu / Linaro 4.6.1-9ubuntu3) 4.6.1
J'ai également essayé SET(CMAKE_CXX_FLAGS "-std=c++0x")
, ce qui ne fonctionne pas non plus.
Je ne comprends pas comment activer les fonctionnalités C ++ 11 à l'aide de CMake.
set(CMAKE_CXX_STANDARD 11)
(avant de définir la cible) est le meilleur moyen.
CXX_STANDARD
cela ne fonctionne pas sur MSVC, donc en gros, vous devez vous rabattre sur target_compile_features
si vous voulez quelque chose qui fonctionne sur plusieurs plates-formes.
SET(CMAKE_CXX_FLAGS "-std=c++0x")
fonctionne très bien pour moi, donc il y a probablement un problème ailleurs dans le fichier CMakeLists. Assurez-vous de ne pas écraser accidentellement le contenu de CMAKE_CXX_FLAGS ultérieurement.