Come abilitare C ++ 11 in Qt Creator?

Il titolo è abbastanza auto-descrittivo. Ho scaricato Qt Creator 2.7.0 e sto cercando di compilare un codice C ++ 11 di base:

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

Sto ricevendo il seguente errore:

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

Tuttavia, secondo questo articolo questa versione di Qt Creator supporta C ++ 11. Quindi come lo abilito?

Secondo questo sito aggiungi

CONFIG += c++11

al tuo file .pro (vedi in fondo a quella pagina web). Richiede Qt 5.


Le altre risposte, suggerendo

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

funziona anche con Qt 4.8 e gcc / clang.

Aggiungi questo al tuo file .pro

 QMAKE_CXXFLAGS += -std=c++11 

o

 CONFIG += c++11 

Come alternativa per la gestione di entrambi i casi affrontati nell’eccellente risposta di Ali, di solito aggiungo

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

ai miei file di progetto. Questo può essere utile quando non ti interessa molto quale sia la versione di Qt utilizzata dal tuo team, ma vuoi che sia abilitato C ++ 11 in ogni caso.

aggiungi al tuo file qmake

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

Se si utilizza una versione precedente di QT (<5), provare questo

 QMAKE_CXXFLAGS += -std=c++0x 

L’unico posto in cui riesco a farlo funzionare è la ricerca in … \ Qt \ {5.9; o la tua versione} \ mingw {53_32; o la tua versione} \ mkspecs \ win32-g ++ \ qmake.conf:

Quindi sulla linea: QMAKE_CFLAGS + = -fno-keep-inline-dllexport

Modifica: QMAKE_CFLAGS + = -fno-keep-inline-dllexport -std = c ++ 11

Gli effetti sono immediati! 🙂