web-dev-qa-db-fra.com

Comment activer C++ 11 dans Qt Creator?

Le titre est assez auto-descriptif. J'ai téléchargé Qt Creator 2.7.0 et j'essaie de compiler du code C++ 11 de base:

int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
  x *= 2;
}

Je reçois l'erreur suivante:

range based for loops are not allowed in c++ 98 mode

Pourtant, selon cet article cette version de Qt Creator prend en charge C++ 11. Alors, comment puis-je l'activer?

151
Andrey Chernukha

Selon ce site add

CONFIG += c++11

dans votre fichier .pro (voir au bas de cette page Web). Il nécessite Qt 5.


Les autres réponses suggérant 

QMAKE_CXXFLAGS += -std=c++11 (ou QMAKE_CXXFLAGS += -std=c++0x)

travaille également avec Qt 4.8 et gcc/clang.

248
Ali

Ajoutez ceci à votre fichier .pro

QMAKE_CXXFLAGS += -std=c++11

ou 

CONFIG += c++11
30
Sherlock

Au lieu de traiter les deux cas traités dans l'excellente réponse d'ALi, j'ajoute généralement 

# With C++11 support
greaterThan(QT_MAJOR_VERSION, 4){    
CONFIG += c++11
} else {
QMAKE_CXXFLAGS += -std=c++0x
}

à mes fichiers de projet. Cela peut être pratique lorsque vous ne vous souciez pas vraiment de la version de Qt que les gens utilisent dans votre équipe, mais que vous voulez que C++ 11 soit activé dans tous les cas. 

17
Яois

ajouter à votre fichier qmake

QMAKE_CXXFLAGS+= -std=c++11
QMAKE_LFLAGS +=  -std=c++11
6
guardezi

Si vous utilisez une version antérieure de QT (<5), essayez ceci.

QMAKE_CXXFLAGS += -std=c++0x
3
asloob

Le seul endroit où j'ai réussi à le faire fonctionner est en cherchant dans:

...\Qt\{5.9; ou votre version}\mingw {53_32; ou votre version}\mkspecs\win32-g ++\qmake.conf:

Puis à la ligne:

QMAKE_CFLAGS           += -fno-keep-inline-dllexport

Modifier : 

QMAKE_CFLAGS           += -fno-keep-inline-dllexport -std=c++11
0
Bretzelus