2013-10-22 13 views
20

Quando compilo un progetto con Qt Creator 2.8/Qt5.1 con VS 2010, tutto va bene. Se faccio lo stesso con MinGW ottengo il seguente errore.Qt: CONFIG + = C++ 11, ma -std = C++ 0x

error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. 

ho capito che ho bisogno di abilitare C + 11, ma ho CONFIG += console c++11 nel mio file .pro. Non è questo ciò che è necessario? Cosa sto sbagliando?

Quando guardo la marca vedo:

CXXFLAGS  = -pipe -fno-keep-inline-dllexport -g -std=c++0x 

Confusione, come dico C++ 11 nel file pro.

  1. stato eliminato tutto, correre qmake ecc, da zero, nessun risultato
  2. Come detto, con VS2010 funziona
  3. Utilizzando la MinGW con gcc 4.8.0 da qui. http://qt-project.org/downloads
  4. Se questo è importante, Win7 32

Controllato:

Trovato, ma può accettalo solo per qualche tempo: https://stackoverflow.com/a/19530028/356726

+4

È la stessa cosa, eccetto '-std = C++ 0x' funziona anche con le versioni precedenti del compilatore. –

+0

Grazie. Ma perché "devo essere abilitato con l'errore -std = C++ 11" quando uso #include

+1

Questo è davvero strano. –

risposta

10

Ok, grazie ai tuoi suggerimenti l'ho capito.

Dopo aver provato qualche consiglio da sopra, senza ancora successo, ho escluso qualsiasi sottoprogetto che potrei pensare nel mio progetto. Alla fine ho trovato un esempio .pro di QML che non ha definito CONFIG += c++11.

Ciò ha causato l'errore. Quindi la causa principale non era il progetto su cui stavo lavorando, ma un sottoprogetto che tuttavia è stato compilato nello stesso passo.

6

Sto usando Qt Creator 2.7.2, e io ho questa linea nel mio file .pro:

QMAKE_CXXFLAGS += -std=c++11 

fa questo lavoro per voi?

+0

Darò questa traccia. Da qualche parte ho letto di non usare QMAKE_CXXFLAGS ma CONFIG + = C++ 11 - ma non riesco a ricordare. Si aggiornerà non appena avrò un risultato. –

+1

Questo ha funzionato per me come un incantesimo! Grazie! – nullgeppetto

9

Provare a cambiare la linea mkspecs/win32-g++/qmake.conf che dice:

QMAKE_CXXFLAGS_CXX11 = -std=c++0x 

a:

QMAKE_CXXFLAGS_CXX11 = -std=c++11 

e ri-eseguire qmake.


Alcuni dettagli aggiuntivi:

Aggiunta la funzione "C++ 11" alla variabile CONFIG qmake fa sì che il file mkspecs/features/c++11.prf di essere tirato in (vedere la sezione "Aggiunta di funzionalità Nuova configurazione" del qmake Advanced Usage documento per i dettagli).

Questo profilo qmake ha una linea QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11 che consente di configurare il supporto per C++ 11. Quindi aggiungere "C++ 11" alla variabile CONFIG è il modo corretto per indicare che si desidera il supporto C++ 11 per qmake, come hai menzionato in un commento.

+0

Con l'ultimo QtCreator in Ubuntu 14.04, ho ancora lo stesso problema (anche se in /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf). Trovo un po 'allarmante dover modificare il file conf installato per farlo funzionare. C'è un modo per i file user config o pro/pri per ridefinire questa variabile? – sage

+0

Non so - Non sono abbastanza esperto con qmake per sapere se esiste un meccanismo accessibile all'utente per sovrascriverlo. –