Pergunta

When I compile a project under Qt Creator 2.8 / Qt5.1 with VS 2010 all is fine. If I do the same with MinGW I get the following error.

 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.

I understand I need to enable C+11, but I have CONFIG += console c++11 in my .pro file. Is this not what is needed? What am I doing wrong?

When I look at the make I see:

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

Confusing, as I say c++11 in the pro file.

  1. Have deleted everything, run qmake etc, from the scratch, no result
  2. As said, with VS2010 it works
  3. Using the MinGW with gcc 4.8.0 from here. http://qt-project.org/downloads
  4. If this matters, Win7 32

Checked:

Found solution, but can only accept it in some time: https://stackoverflow.com/a/19530028/356726

Foi útil?

Solução

Ok, thanks to your hints I have figured it out.

After I have tried any possible advice from above, with still no success, I have excluded any subproject I could think of in my project. Eventually I have found a QML sample .pro which did not have CONFIG += c++11 defined.

That was causing the error. So the root cause was not the project I was working on, but a subproject which however got compiled in the same step.

Outras dicas

Try changing the mkspecs/win32-g++/qmake.conf line that says:

QMAKE_CXXFLAGS_CXX11    = -std=c++0x

to:

QMAKE_CXXFLAGS_CXX11    = -std=c++11

and re-run qmake.


Some additional details:

Adding the "c++11" feature to the CONFIG qmake variable causes the mkspecs/features/c++11.prf file to be pulled in (see the "Adding New Configuration Features" section of the qmake Advanced Usage document for details).

That qmake profile has a QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11 line among other things which configure C++11 support. So adding "c++11" to the CONFIG variable is the proper way to indicate that you want c++11 support to qmake, as you mentioned in a comment.

I am using Qt Creator 2.7.2, and I have this line in my .pro file:

QMAKE_CXXFLAGS += -std=c++11

Does this work for you?

qmake will use whatever flags one has for c++11. So you can overwrite them like:

unix:QMAKE_CXXFLAGS_CXX11 = -std=c++11

CONFIG *= c++11

You can even tell it to use -std=c++14 or -std=c++17 instead when c++11 is added to the config as older qmake's might not be aware of them.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top