Qt 5:CONFIG+=c++11 与 QMAKE_CXXFLAGS+=-std=c++11 (更好的)

Posted

技术标签:

【中文标题】Qt 5:CONFIG+=c++11 与 QMAKE_CXXFLAGS+=-std=c++11 (更好的)【英文标题】:Qt 5: CONFIG+=c++11 vs QMAKE_CXXFLAGS+=-std=c++11 (What's better) 【发布时间】:2014-12-10 22:53:38 【问题描述】:

我知道如果你想在你的 Qt 代码中添加 C++11 特性,你需要在你的 .pro 文件中写下这一行:

QMAKE_CXXFLAGS += -std=c++11, 

但你也可以使用另一行来代替它:

CONFIG+=c++11.

问题是:用什么比较好?

【问题讨论】:

【参考方案1】:

CONFIG+=c++11 更好,因为它由知道如何正确设置它的qmake 工具处理,而QMAKE_CXXFLAGS += -std=c++11 几乎直接告诉qmake-std=c++11 标志设置为编译器,但它可能不起作用,因为某处是-std=gnu++11 甚至-std=c++0x,所以您可能遇到编译器错误。因此,这不仅与错误有关,还与可移植性有关。

来自the qt5-qmake documentation:

配置

指定项目配置和编译器选项。这些值由 qmake 内部识别并具有特殊含义。

【讨论】:

没错,但是我尝试使用 CONFIG+=c++11 编译 Qt5 代码,以使用基于范围的 Qt 容器(准确来说是 QList),但我遇到了编译器错误,然后我将其更改为 QMAKE_CXXFLAGS += -std=gnu++11 并且效果很好。感谢您的回答。 嗯,在你问这个问题的时候它对我有用。

以上是关于Qt 5:CONFIG+=c++11 与 QMAKE_CXXFLAGS+=-std=c++11 (更好的)的主要内容,如果未能解决你的问题,请参考以下文章

Qt5 msvc 2010不识别自动(c ++ 11)[重复]

Qt Creator 2.7.0 (Qt 5.0.2) 中的 C++11 线程支持

新安装qt5.0,在编译一个对话框过程中,提示编译器问题出错。

Qt 项目文件没有看到环境变量

让Qt5默认支持C++17的设置方法

QT 不更新 UI