如何在Qt Creator中启用C ++ 11?

标题很自我描述。 我已经下载了Qt Creator 2.7.0,我正在编译一些基本的C ++ 11代码:

int my_array[5] = {1, 2, 3, 4, 5}; for(int &x : my_array) { x *= 2; } 

我收到以下错误:

 range based for loops are not allowed in c++ 98 mode 

然而,根据这篇文章,这个版本的Qt Creator支持C ++ 11。 那么如何启用它?

根据这个网站添加

CONFIG += c++11

到您的.pro文件(请参阅该网页的底部)。 它需要Qt 5。


其他答案,build议

QMAKE_CXXFLAGS += -std=c++11 (或QMAKE_CXXFLAGS += -std=c++0x

也使用Qt 4.8和gcc / clang。

将此添加到您的.pro文件

 QMAKE_CXXFLAGS += -std=c++11 

要么

 CONFIG += c++11 

作为处理阿里杰出答案中的两个案件的替代scheme,我通常补充说

 # With C++11 support greaterThan(QT_MAJOR_VERSION, 4){ CONFIG += c++11 } else { QMAKE_CXXFLAGS += -std=c++0x } 

到我的项目文件。 当你不太在意团队中使用的是哪个Qt版本时,这可能会很方便,但是你希望他们在任何情况下都启用C ++ 11。

添加到您的qmake文件

 QMAKE_CXXFLAGS+= -std=c++11 QMAKE_LFLAGS += -std=c++11 

如果您正在使用QT的早期版本(<5),请尝试此操作

 QMAKE_CXXFLAGS += -std=c++0x 

我成功地使它工作的唯一地方是通过search… \ Qt \ {5.9; 或者你的版本} \ mingw {53_32; 或您的版本} \ mkspecs \ win32-g ++ \ qmake.conf:

然后在这行:QMAKE_CFLAGS + = -fno-keep-inline-dllexport

编辑:QMAKE_CFLAGS + = -fno-keep-inline-dllexport -std = c ++ 11

效果立竿见影! 🙂