【问题标题】:Compilation of C++14 in qtcreatorqtcreator中C++14的编译
【发布时间】:2016-07-10 15:52:27
【问题描述】:

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

最近,我改变了我的 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

但是行为是一样的。

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

【问题讨论】:

  • 如果我遇到这个问题,我会在我的这个项目的配置文件和你的 qt 创建者的配置文件中递归 grep "gnu++11",但在我的 bin 目录中失败了。做不到这一点,硬盘驱动器很宽。这可能是某个地方的一些无害环境......
  • 试试CONFIG += C++14
  • @JonHarper 你应该把它作为正确答案发布!
  • QMAKE_CXXFLAGS_CXX11 = -std=c++14 添加到您的 *.pro 文件中。看来,您的 *.pro 文件已经包含 CONFIG += c++11 指令。

标签: c++ qt qt-creator c++14


【解决方案1】:

代替:

CONFIG += -std=c++14

用途:

CONFIG += c++14

【讨论】:

  • 但另请参阅this answer,了解 Windows 上的最新 MinGW,至少从 5.8.0 开始,Qt 并未直接针对该 MinGW。
【解决方案2】:

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

首先,您需要项目中使用的库路径。您可以通过查看 Projects 面板 (Ctrl + 5) 并在 (Build|Run) 按钮上记住“工具包”的名称来确定路径,然后按照 Tools -> Options -> Build & Run -> Kits,选择您需要的“工具包”记得之前,然后你可以看到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(如果有)变量更改为您想要的任何变量(例如, -std=gnu++1z)。

对于clang,路径变成了/usr/local/Qt-5.4.1/mkspecs/common/clang.conf

对于其他一些目标/编译器,您可能应该关注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_CXX11 或@ 987654340@,你需要的。然后适当地改变它的值。

那么你当然需要使用CONFIG += c++11CONFIG += c++14,就像his answer中提到的Jon Harper

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    • 2014-05-19
    相关资源
    最近更新 更多