Problem: QtCreator scheint nicht mit C++ 11 Standard zu kompilieren, obwohl Config += c++11
in der Projektdatei .pro festgelegt ist.C++ 11 in QtCreator 3.5.0 auf Ubuntu
Hintergrund: Die globale Definition der scoped Aufzählungen sind in einem separaten global_definitions.h Header-Datei:
// ...
enum class dr_items { CROSSHAIR,
GRID,
LABELS,
DATA,
AMOUNT // count element
};
Diese Datei eine Warnung erzeugt für jeden Enum scoped, aber kein Fehler:
/path/global_definitions.h:7: warning: scoped enums only available with -std=c++11 or -std=gnu++11
enum class dr_items { CROSSHAIR,
^
der Fehler tritt auf der ersten Nutzung des scoped enum in Datei oscscene.cpp:
#include "oscscene.h"
#include "global_definitions.h"
// ...
for(int i=0;i++;i<dr_items::AMOUNT){
// ...
mit dem Fehlerausgang
/path/oscscene.cpp:9: error: 'dr_items' is not a class or namespace
for(int i=0;i++;i<dr_items::AMOUNT){
^
Projekte .proDatei:
QT += core gui
CONFIG += c++11
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
Versionen:
- OS ist xubuntu 15.10
- QtCreator Version 3.5.0
- Qt-Version ist ist 5.4.2
- G ++ Version 5.2.1
- Gcc-Version ist 5.2.1
- make Version 4.0
- ist qmake ist Version 2.01a, scheint aber zu verwenden Qt-Version 4.8.6 in/usr/lib/x86_64 zu beziehen -linux-gnu, wenn von der Konsole aus aufgerufen wird.
Andere Antworten schlagen vor 'QMAKE_CXXFLAGS + = -std = C++ 11' ([hier] (http://stackoverflow.com/q/16948382/1171191) und [hier] (http://stackoverflow.com/ q/17510897/1171191)). – BoBTFish
Es gibt eine 1: 1-Entsprechung zwischen einer qmake-Binärdatei und einer Qt-Installation. Wenn Ihr Projekt mit Qt 5.4 erstellt wird, verwendet Qt Creator seinen bestimmten qmake. Dies ist möglicherweise nicht das Standard-qmake in Ihrem Shell-PATH. Sie können einfach überprüfen, welche Qmake Qt Creator für eine bestimmte Kit/Qt-Version verwendet. –