web-dev-qa-db-de.com

Wie kann ich C++ 11 in Qt Creator aktivieren?

Der Titel ist ziemlich selbsterklärend. Ich habe Qt Creator 2.7.0 heruntergeladen und versuche, einfachen C++ 11-Code zu kompilieren:

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

Ich erhalte folgende Fehlermeldung:

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

Laut diesem Artikel unterstützt diese Version von Qt Creator jedoch C++ 11. Wie kann ich es aktivieren?

151

Nach dieser Seite hinzufügen

CONFIG += c++11

in Ihre .pro-Datei (siehe unten auf dieser Webseite). Es erfordert Qt 5.


Die anderen Antworten schlagen vor 

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

arbeiten auch mit Qt 4.8 und gcc/clang.

248
Ali

Fügen Sie dies Ihrer .pro-Datei hinzu

QMAKE_CXXFLAGS += -std=c++11

oder 

CONFIG += c++11
30
Sherlock

Als Alternative für die Behandlung beider Fälle, die in der hervorragenden Antwort von ALi behandelt werden, füge ich normalerweise hinzu 

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

zu meinen Projektdateien. Dies kann praktisch sein, wenn Sie sich nicht wirklich darum kümmern, welche Qt-Version die Leute in Ihrem Team verwenden. Sie möchten jedoch, dass C++ 11 auf jeden Fall aktiviert wird. 

17
Яois

fügen Sie Ihrer qmake-Datei hinzu

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

Wenn Sie eine frühere Version von QT (<5) verwenden, versuchen Sie dies

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

Der einzige Ort, an dem ich erfolgreich arbeiten kann, ist die Suche in:

...\Qt\{5,9; oder deine Version}\mingw {53_32; oder Ihre version}\mkspecs\win32-g ++\qmake.conf:

Dann an der Linie:

QMAKE_CFLAGS           += -fno-keep-inline-dllexport

Bearbeiten: 

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