当我使用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,但我的.pro文件中有CONFIG += console c++11
。这不是需要的吗? 我做错了什么?
当我看到制作时,我看到了:
CXXFLAGS = -pipe -fno-keep-inline-dllexport -g -std=c++0x
令人困惑,正如我在专业档案中所说的c ++ 11。
qmake
等,无结果经过:
找到解决方案,但只能在一段时间内接受:https://stackoverflow.com/a/19530028/356726
答案 0 :(得分:10)
好的,多亏了你的提示我已经弄明白了。
在我从上面尝试过任何可能的建议后,仍然没有成功,我已经排除了我能在项目中想到的任何子项目。最后我找到了一个没有定义CONFIG += c++11
的QML样本.pro。
这导致错误。因此,根本原因不是我正在研究的项目,而是一个子项目,但是它在同一步骤中被编译。
答案 1 :(得分: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配置文件在配置C ++ 11支持的其他内容中有QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11
行。所以在CONFIG变量中添加“c ++ 11”是表明你想要qmake支持c ++ 11的正确方法,正如你在评论中提到的那样。
答案 2 :(得分:6)
我正在使用Qt Creator 2.7.2,我的.pro文件中有这一行:
QMAKE_CXXFLAGS += -std=c++11
这对你有用吗?
答案 3 :(得分:1)
qmake将使用c ++ 11中的任何标志。所以你可以像:
一样覆盖它们unix:QMAKE_CXXFLAGS_CXX11 = -std = c ++ 11
CONFIG * = c ++ 11
你甚至可以告诉它使用-std = c ++ 14或-std = c ++ 17而不是将c ++ 11添加到配置中,因为较旧的qmake可能不知道它们。