qtcreator中C++14的编译

Compilation of C++14 in qtcreator

我有一个包含 C++14 部分的 qt 项目。

最近,我更改了 ubuntu 发行版。现在我有 16.04 LTS,我安装了 Qt creator 4.02(6 月 13 日构建)。

为了启用C++14编译,我在工程文件中放入:

QMAKE_CXXFLAGS += -std=c++14

但是,在构建项目时,IDE 生成以下命令:

g++ -c -pipe -std=c++14 -g -O0 -g -std=gnu++11 -Wall -W -D_REENTRANT ...

正如所见,生成的 makefile 放置了标志 -std=gnu++11,它覆盖了 C++14 的标志。我以前的发行版(LTS 12.04,相同的 qt creator 版本)没有发生这种情况。

我试过

CONFIG += -std=c++14

但行为是一样的。

有人可以提供任何线索吗?

而不是:

CONFIG += -std=c++14

使用:

CONFIG += c++14

你可以从根本上解决它。通过更改配置文件。

首先你需要你项目中使用的库路径。您可以通过查看 Projects 面板 (Ctrl + 5) 并记住 (Build|Run) 按钮上的 "Kit" 的名称来确定路径,然后按照 Tools -> Options -> Build & Run -> Kits, select你之前记得的"Kit",然后你可以看到Qt version:行的内容,之后在Qt versions选项卡你可以看到你对应的完整库路径需要。就我而言,我看到 /usr/local/Qt-5.4.1/.

/usr/local/Qt-5.4.1/mkspecs/common/g++-base.conf 文件中(您可能安装了 Qt 库的另一个路径),您可以更改 QMAKE_CXXFLAGS_CXX11QMAKE_CXXFLAGS_CXX14(如果any) 变量到任何你想要的(比如 -std=gnu++1z)。

对于 clang,路径在我的例子中变为 /usr/local/Qt-5.4.1/mkspecs/common/clang.conf

对于其他一些 targets/compilers 你可能应该遵循 Tools -> Options -> Build & Run -> Kits -> (select Kit you use) -> (look at 'Qt mkspec:' line at bottom) 然后在 /usr/local/Qt-5.4.1/mkspecs/*/qmake.conf 中找到(其中 *Qt mkspec: 行内容)和所有包括 *.conf 文件一个您需要的字符串 QMAKE_CXXFLAGS_CXX11QMAKE_CXXFLAGS_CXX14。然后适当改变它的值。

那当然要用CONFIG += c++11CONFIG += c++14,如Jon Harper mentioned in .