20

当我使用 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.

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

当我查看make时,我看到:

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

令人困惑,正如我在 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

4

4 回答 4

10

好的,感谢您的提示,我已经弄清楚了。

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

那是导致错误的原因。所以根本原因不是我正在处理的项目,而是在同一步骤中编译的子项目。

于 2013-10-22T23:19:47.937 回答
9

尝试更改显示以下内容的mkspecs/win32-g++/qmake.conf行:

QMAKE_CXXFLAGS_CXX11    = -std=c++0x

到:

QMAKE_CXXFLAGS_CXX11    = -std=c++11

并重新运行 qmake。


一些额外的细节:

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

该 qmake 配置文件有一条QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11线,其中包括配置 C++11 支持。因此,正如您在评论中提到的那样,将“c++11”添加到 CONFIG 变量是表明您希望 c++11 支持 qmake 的正确方法。

于 2013-10-22T18:09:58.953 回答
7

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

QMAKE_CXXFLAGS += -std=c++11

这对你有用吗?

于 2013-10-22T16:34:04.290 回答
1

qmake 将使用 c++11 的任何标志。所以你可以像这样覆盖它们:

unix:QMAKE_CXXFLAGS_CXX11 = -std=c++11

配置 *= c++11

当 c++11 添加到配置中时,您甚至可以告诉它使用 -std=c++14 或 -std=c++17 ,因为旧的 qmake 可能不知道它们。

于 2018-04-24T14:36:43.500 回答