Qt:CONFIG + = C++ 11,但-std = c ++ 0x

Hor*_*ter 20 c++ mingw qt-creator c++11 qt5.1

当我使用VS 2010 在Qt Creator 2.8/Qt5.1下编译项目时,一切都很好.如果我对MinGW做同样的事情,我会收到以下错误.

 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.
Run Code Online (Sandbox Code Playgroud)

我知道我需要启用C + 11,但CONFIG += console c++11我的.pro文件中有.这不是需要的吗?我究竟做错了什么?

当我看到制作时,我看到:

CXXFLAGS      = -pipe -fno-keep-inline-dllexport -g -std=c++0x
Run Code Online (Sandbox Code Playgroud)

混淆,正如我在pro文件中说的c ++ 11.

  1. qmake从头开始删除了所有内容,运行等,没有结果
  2. 如上所述,VS2010可行
  3. 从这里使用带有gcc 4.8.0的MinGW.http://qt-project.org/downloads
  4. 如果这很重要,Win7 32

经过:

找到解决方案,但只能在一段时间内接受它:https://stackoverflow.com/a/19530028/356726

Hor*_*ter 10

好的,多亏了你的暗示我已经弄明白了.

在我从上面尝试了任何可能的建议后,仍然没有成功,我已经排除了我在项目中可以想到的任何子项目.最后我找到了一个没有CONFIG += c++11定义的QML样本.pro .

这导致了错误.因此根本原因不是我正在研究的项目,而是一个子项目,但是在同一步骤中编译了.


Mic*_*urr 9

尝试更改说明的mkspecs/win32-g++/qmake.conf行:

QMAKE_CXXFLAGS_CXX11    = -std=c++0x
Run Code Online (Sandbox Code Playgroud)

至:

QMAKE_CXXFLAGS_CXX11    = -std=c++11
Run Code Online (Sandbox Code Playgroud)

并重新运行qmake.


一些额外的细节:

将"c ++ 11"功能添加到CONFIGqmake变量会导致mkspecs/features/c++11.prf文件被拉入(有关详细信息,请参阅qmake Advanced Usage文档的"添加新配置功能"部分).

qmake配置文件QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11在配置C++ 11支持的其他内容之间有一条线.因此,在CONFIG变量中添加"c ++ 11"是表明你希望c ++ 11支持c ++的正确方法,正如你在评论中提到的那样.


Ton*_*nyK 7

我正在使用Qt Creator 2.7.2,我的.pro文件中有这一行:

QMAKE_CXXFLAGS += -std=c++11
Run Code Online (Sandbox Code Playgroud)

这对你有用吗?