如何在 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。那么我该如何启用它呢?

149612 次浏览

把这个加到你的 。专业档案

QMAKE_CXXFLAGS += -std=c++11

或者

CONFIG += c++11

根据 这个网站添加

CONFIG += c++11

到你的. pro 文件(见网页底部)


其他答案,暗示

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

也与 Qt 4.8和 gcc/clang。一起工作

如果您正在使用早期版本的 QT (< 5) ,请尝试这样做

QMAKE_CXXFLAGS += -std=c++0x

添加到您的 qmake 文件

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

作为处理这两个案件的替代方案,阿里的回答非常出色,我经常补充说

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

我的项目文件。如果您不太关心团队中使用哪个 Qt 版本,但是您希望他们在任何情况下都启用 C + + 11,那么这可能很方便。

我唯一成功的地方就是通过搜索:

... 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