2016-04-07 7 views
1

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.
+2

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

+0

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. –

Antwort

0

Da Qmake Qt 4.6 statt QT5 zu verwenden scheint, die Config += c++11 unterstützt, ist die Lösung

QMAKE_CXXFLAGS += -std=c++11 

in den Projekten .pro-Datei hinzufügen, wie BoBTFish kommentiert. Dies löst das Problem.

+0

Dies sind alte Qt 4 Empfehlungen. Dies ist eine Hacky-Lösung, die auf der von Ihnen verwendeten qmake-Version basiert. Verwenden Sie besser 'CONFIG + = C++ 11' und stellen Sie sicher, dass Sie Ihr Qt-Kit korrekt konfigurieren, um das mit Qt 5.4 gebündelte qmake zu verwenden. Siehe z.B. http://doc.qt.io/qtcreator/creator-project-qmake.html#setting-up-new-qt-versions –