Wie kann ich mit C++14 features beim Bau qmake-Projekte?
Ich bin zurzeit mit C++11-features in meinem Qt-Anwendungen. Allerdings würde ich gerne einige der neuen C++14-features in eigene Anwendungen.
Aktivieren der C++11 in eine Qt-Anwendung, muss man nur fügen Sie eine Zeile in der qmake Projekt-Datei, nämlich:
CONFIG += c++11
oder diese für frühere Versionen:
QMAKE_CXXFLAGS += -std=c++1y
Ich habe bereits versucht, das gleiche zu tun mit C++14, aber es hat nicht funktioniert. Ich habe die oben erwähnte Zeile der qmake Projekt wie folgt:
CONFIG += c++14
oder diese für frühere Versionen:
QMAKE_CXXFLAGS += -std=c++1y
Danach lose Zusammenstellung von Fehlern, die zuvor nicht existiert hat, angezeigt, wenn Sie versuchen, das Projekt zu erstellen. Kompiliert das Projekt gut, allerdings, wenn ich versuche, mit jedem C++14 features, bekomme ich einen Kompilierungsfehler. Dies ist ein Beispiel:
template<typename T>
constexpr T pi = T(3.1415926535897932385);
Dies ist der entsprechende error:
main.cpp:7: error: template declaration of 'constexpr const T pi'
constexpr T pi = T(3.1415926535897932385);
^
Aktivieren der C++14 features bei Verwendung einer qmake Projekt im QtCreator?
Bin ich mit dem Qt-5.3.2, Qt Creator 3.2.1 und MinGW 4.8.2 32 bit.
Vielleicht lohnt sich ein Lesen Sie auch: woboq.com/blog/cpp14-in-qt.html
InformationsquelleAutor Rickforce | 2014-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Qt Creator ist nur ein IDE.
Können Sie denken IDEs als "schlauer text-Editoren", die Hilfe der Entwickler mit debugging -, Gebäude -, code-Vervollständigung, Datei-management, und so weiter.
IDEs sind irrelevant während der Kompilierung.
Was zählt, ist dein compiler. Und es ist unabhängige aus Ihrer IDE.
g++ 4.8.x unterstützt nicht viele C++14 features: schauen Sie sich diese Seite um zu erfahren, was C++14 features unterstützt werden.
Eigentlich ist diese Frage ist nicht so viel über compiler, es wird über qmake... (die nicht über integrierte Unterstützung für die C++14, zumindest noch nicht).
gcc eigentlich nicht das vollständige c++11 feature-set. Als Beispiel constexpr ist bis jetzt nicht voll implementiert ( aktuelle compiler-Fehler mit der Meldung "noch nicht implementiert" in einigen Fällen )
Unterstützung des neuen standards wird die Compiler-Funktion, es nicht mit qmake
die OP ist zu Fragen, wie es funktioniert mit qmake!
InformationsquelleAutor Vittorio Romeo
Ist dies nun korrekt unterstützt von Qt 5.4. Geben Sie einfach diese in Ihre qmake Projekt Datei:
Den erforderlichen code ändern, ging in die Mitte 2014 von Thiago:
Hinzufügen von Unterstützung für CONFIG += c++14
Habe ich gerade erstellt die notwendige Dokumentation ändern:
Erwähnen, die c++14 CONFIG-option in der qmake variable Referenz
Bitte beachten Sie, dass Variablen Vorlagen, sind nur unterstützt von gcc 5.0, aber dann ist dein code funktioniert Prima. Dies kann verwendet werden zum testen von C++14, die mit älteren gcc:
main.cpp
main.pro -
Erstellen und Ausführen
- Ausgang
clang++ -c -pipe -g -isysroot /Applications/Xcode.app/... -mmacosx-version-min=10.7 -std=c++1y -Wall -W -fPIE
Qt Creator 3.3.0 (opensource) Based on Qt 5.4.0 (Clang 6.0 (Apple), 64 bit) Built on Dec 8 2014 at 15:34:58 From revision d36c4d87db
Alle Ideen, was falsch? Hinzugefügt habe ich die Flagge als QMAKE_CXXFLAGS und alles funktioniert gut. (yay make_unique<>!)InformationsquelleAutor lpapp
Für einige seltsame Grund, warum das, was Qt macht:
Wenn der compiler gcc oder mingw,
CONFIG+=C++14
verwandelt sich zu einem compiler-flag-std=c++14
(das, was Sie erwarten)Wenn es ein anderer compiler (wie clang),
CONFIG=C++14
ist blöd umgewandelt-std=c++11
(sic!), so erhalten Sie Fehler wegen nicht unterstützter Funktionen, auch wenn Ihr clang version korrekt unterstützt C++14.Um es zu beheben, geben Sie die flag explizit:
Diese Weise, bist du sicher, dass dein compiler (g++, mingw oder clang) erhalten die korrekten flags.
InformationsquelleAutor pierre
Zur Verwendung von C++14 mit qmake mit Versionen vor Qt 5.4 (es macht keinen Unterschied, ob Sie es mit Qt Creator, oder mit einer anderen IDE oder auf der Kommandozeile) und gcc, fügen Sie diese zu Ihrem .pro Datei:
qmake bekam Unterstützung für
CONFIG += c++14
mit Qt 5.4, so dass Sie können verwenden, dass für Projekte, bei denen Sie mit vertraut sind, die mindestens die entsprechende version von Qt. Werden Sie sicher, dass entweder die explizite compiler-flags, oder verwenden Sie dieCONFIG
option, aber nicht beides zur gleichen Zeit, um Konflikte zu vermeiden schaltet.Leider gcc 4.8.2 unterstützt nur sehr wenige C++14 features (siehe hier), aber testen kann man das mit diesem code-snippet:
Wird kompilieren in Ordnung mit
QMAKE_CXXFLAGS += -std=c++1y
, aber die Warnung mitCONFIG += c++11
oderQMAKE_CXXFLAGS += -std=c++1x
.InformationsquelleAutor hyde