399 votes

Comment activer C ++ 11 dans CMake?

Lorsque j'essaie de lancer CMake makefile pour compiler mon programme, j'obtiens l'erreur qu' range based for loops are not supported in c++ 98 mode. J'ai essayé d'ajouter add_definitions(-std=c++0x) de mon CMakeLists.txt mais il n'a pas aidé. J'ai essayé cela aussi:

if(CMAKE_COMPILER_IS_GNUCXX)
    add_definitions(-std=gnu++0x)
endif()

Quand je le fais, g++ --version, j'obtiens:

g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

Je ne comprends pas comment je peux activer C++ 11 caractéristiques utilisation de CMake. S'il vous plaît aider!

__ EDIT __

J'ai oublié de mentionner que j'ai aussi essayé de SET(CMAKE_CXX_FLAGS "-std=c++0x"), ce qui ne fonctionne pas.

194voto

Erik Sjölund Points 1841

Si vous n'avez pas peur d'expérimenter avec la version de développement de CMake, vous pouvez télécharger une nightly build CMake et utiliser la commande CMake target_compile_features() pour spécifier les exigences, C++ fonctionnalité cxx_range_for.

cmake_minimum_required(VERSION 3.0.20140410 FATAL_ERROR)
project(foobar CXX)
add_executable(foobar main.cc)                                                                                                                                                                                                                                                     
target_compile_features(foobar PRIVATE cxx_range_for)

Vous pouvez également utiliser le CMake variable CMAKE_CXX_COMPILE_FEATURES. Il contient une liste des fonctionnalités C++ le compilateur prend en charge.

Voir aussi ma réponse http://stackoverflow.com/a/20165220/757777

92voto

KoKuToru Points 1779

Je me sers

Mais si vous voulez jouer avec , est assez vieux. Essayez d’obtenir une version plus récente `` version.

41voto

Subhamoy Sengupta Points 1008

Il s’avère que, `` activer beaucoup C ++11 fonctions. La raison pour laquelle qu'il n’a pas fonctionné, c’était que l’instruction ressemble à ceci :

Suivant cette approche, en quelque sorte le `` indicateur a été remplacé et il n’a pas fonctionné. Définition des indicateurs d’un ou à l’aide d’une méthode de liste ne fonctionne.

15voto

Hindol Points 987

Il s’agit d’une autre façon de permettant l’utilisation de C ++11,

J’ai rencontré lorsque seulement cette méthode fonctionne et autres méthodes échouent. Peut-être qu’il a quelque chose à voir avec la dernière version de CMake.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X