2016-07-10 6 views
7

Ich habe ein Qt-Projekt, das Teile in C++14 enthält.Kompilierung von C++ 14 in qtcreator

Vor kurzem habe ich meine Ubuntu-Distribution geändert. Jetzt habe ich 16.04 LTS und ich installierte Qt Creator 4.02 (gebaut am 13. Juni).

Um C++14 Zusammenstellung zu ermöglichen, habe ich in der Projektdatei setzen:

QMAKE_CXXFLAGS += -std=c++14 

Wenn jedoch Projekt Aufbau erzeugt die IDE den folgenden Befehl ein:

g++ -c -pipe -std=c++14 -g -O0 -g -std=gnu++11 -Wall -W -D_REENTRANT ... 

Da die erzeugte gesehen, makefile setzt die Flagge -std=gnu++11, die das Flag für C++14 überschreibt. Dies ist bei meiner vorherigen Distribution (LTS 12.04, gleiche qt creator Version) nicht passiert.

Ich habe versucht, mit

CONFIG += -std=c++14 

aber das Verhalten ist das gleiche.

Kann jemand einen Hinweis geben?

+2

Wenn ich in das geriet würde ich rekursive Grep für '" gnu ++ 11 "' in meinen Konfigurationsdateien für dieses Projekt, und die Konfigurationsdateien für Ihren qt-Ersteller, und das in meinen bin-Verzeichnissen fehlgeschlagen. Versagt das, Festplatte weit.Es ist wahrscheinlich eine harmlose Umgebung irgendwo ... – Yakk

+6

Versuchen Sie 'CONFIG + = C++ 14' –

+1

@JonHarper Sie sollten es als die richtige Antwort geschrieben haben! – Leon

Antwort

7

Statt:

CONFIG += -std=c++14 

Verwendung:

CONFIG += c++14 
+1

Aber auch [diese Antwort] (http://stackoverflow.com/a/42724650/1329652) für die letzten MinGW unter Windows, die nicht direkt von Qt ab 5.8.0 angegriffen wird. –

2

Sie können es radikal beheben. Durch Ändern der Konfigurationsdateien.

Zuerst benötigen Sie den Bibliothekspfad, der in Ihrem Projekt verwendet wird. Der Pfad, den Sie bestimmen können Projekte Panel (Ctrl + 5) und die Erinnerung an den Namen eines "Kit" über die (Build|Run) Tasten, dann folgen Sie der Tools -> Options -> Build & Run -> Kits, wählen Sie die "Kit", die Sie sich erinnern, dann können Sie sehen Qt version: Zeileninhalt, Danach können Sie auf der Registerkarte Qt versions den entsprechenden vollständigen Bibliothekspfad sehen, den Sie benötigen. In meinem Fall sehe ich /usr/local/Qt-5.4.1/.

In /usr/local/Qt-5.4.1/mkspecs/common/g++-base.conf-Datei (Sie einen anderen Pfad für Qt Bibliothek installiert haben), können Sie QMAKE_CXXFLAGS_CXX11 oder QMAKE_CXXFLAGS_CXX14 ändern (falls vorhanden) Variable, was Sie wollen (sagen wir, zu -std=gnu++1z).

Für clang wurde der Pfad /usr/local/Qt-5.4.1/mkspecs/common/clang.conf in meinem Fall.

Für einige andere Ziele/Compiler sollten Sie kann Tools -> Options -> Build & Run -> Kits -> (select Kit you use) -> (look at 'Qt mkspec:' line at bottom) dann in /usr/local/Qt-5.4.1/mkspecs/*/qmake.conf finden folgen (wo * ist Qt mkspec: Zeileninhalt) und in alle enthaltenen Dateien *.conf einen String QMAKE_CXXFLAGS_CXX11 oder QMAKE_CXXFLAGS_CXX14, die Sie benötigen. Ändern Sie dann den Wert entsprechend.

Dann brauchen Sie natürlich CONFIG += c++11 oder CONFIG += c++14, wie Jon Harper in his answer erwähnt zu verwenden.