2013-10-22 71 views
20

当我编译一个项目在下Qt Creator 2.8/Qt5.1与VS 2010一切都很好。如果我对MinGW做同样的事情,我会得到以下错误。Qt:CONFIG + = C++ 11,但-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. 

我明白我需要启用C + 11,但我在.pro文件中有CONFIG += console c++11。这不是需要的吗? 我在做什么错?

当我看厂名我看到:

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

混乱,因为我在亲文件说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

这是一样的事情,除了'-std = C++ 0x'也适用于老版本的编译器。 –

+0

谢谢。但是,当我使用#include

+1

时,为什么“必须启用-std = C++ 11”错误确实很奇怪。 –

回答

10

好的,多亏了你的提示,我已经弄明白了。

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

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

6

我使用Qt Creator的2.7.2,我有这条线在我的.pro文件:

QMAKE_CXXFLAGS += -std=c++11 

这是否对你的工作?

+0

我会给这条线索。某处我读过不使用QMAKE_CXXFLAGS,但CONFIG + = C++ 11 - 但我无法记起。只要我有结果就会更新。 –

+1

这对我来说就像一个魅力!谢谢! – nullgeppetto

9

尝试改变mkspecs/win32-g++/qmake.conf行说:

QMAKE_CXXFLAGS_CXX11 = -std=c++0x 

到:

QMAKE_CXXFLAGS_CXX11 = -std=c++11 

,并重新运行qmake的。


一些额外的细节:

添加“C++ 11”功能将CONFIG QMAKE变量导致mkspecs/features/c++11.prf文件中拉(见qmake Advanced Usage的“添加新配置功能”一节文件的细节)。

qmake配置文件有一个QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11行配置C++ 11支持的其他事情。因此,向CONFIG变量添加“C++ 11”是正确的方式,表示您希望对qmake提供C++ 11支持,就像您在评论中提到的那样。

+0

使用Ubuntu 14.04下最新的QtCreator,我仍然遇到同样的问题(尽管在/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf中)。我觉得我必须编辑已安装的conf文件才能使其工作。有没有办法让用户配置或pro/pri文件重新定义这个变量? – sage

+0

我不知道 - 我对qmake知之甚少,不知道是否有用户可访问的机制来覆盖它。 –