【问题标题】:how do I add -std=c++11 to the compiler options in my Qt Creator?如何在 Qt Creator 的编译器选项中添加 -std=c++11?
【发布时间】:2017-01-09 04:59:18
【问题描述】:

注意:this问题相同,但适用于其他IDE

我正在尝试在 Qt Creator IDE 中编译我的 Qt 项目,但是当我点击构建时,它显示:

此文件需要编译器和库支持 \ 适用于 ISO C++ 2011 标准。必须启用此支持 \ 使用 -std=c++11 或 -std=gnu++11 编译器选项。

当我转到项目 -> 构建和运行 -> 构建步骤 -> 附加参数并添加 -std=c++11 并再次编译时,我在编译输出中得到了这个:

11:45:37:运行 Youtube-dl-gui 项目的步骤...

11:45:37:开始:“/usr/lib/x86_64-linux-gnu/qt5/bin/qmake”/home/fabio/criação/Youtube-dl-gui/Youtube-dl-gui.pro -r -spec linux-g++-64 CONFIG+=debug -std=c++11

用法:/usr/lib/x86_64-linux-gnu/qt5/bin/qmake [模式] [选项] [文件]

...
[这里显示更多使用选项]
...
***未知选项 -std=c++11

11:45:37:进程“/usr/lib/x86_64-linux-gnu/qt5/bin/qmake”退出,代码为 1。

构建/部署项目 Youtube-dl-gui 时出错(套件:桌面) 执行步骤“qmake”时 11:45:37:经过时间:00:00。

在我的 MakeFile 配置文件中:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Youtube-dl-gui
TEMPLATE = app

SOURCES += main.cpp\
    mainwindow.cpp

HEADERS  += mainwindow.h
FORMS    += mainwindow.ui
QMAKE_CXXFLAGS += '-std=c++11'

我已经尝试过这些帖子中提出的建议:

Adding -std=c++11 to compiler options in Anjuta 3.4.3

Qmake doesn't use stdc++11 compilation flag

更新

  • 更改为 CONFIG += c++11 无效
  • 我的项目编译器是/usr/bin/g++,如果我运行/usr/bin/g++ --version,则返回5.4.0 20160609

更新 2

  • 我认为我的 gcc 支持 c++11,因为在 NetBeans 中,我可以使用相同的 /usr/bin/g++ 二进制文件以 c++11 标准构建和运行程序。

  • 正如编译输出所示,正在运行的命令是"/usr/lib/x86_64-linux-gnu/qt5/bin/qmake" /home/fabio/criação/Youtube-dl-gui/Youtube-dl-gui.pro -r -spec linux-g++-64 CONFIG+=debug -std=c++11,我猜是我的qmake version 3.0 不支持c++11,我猜

    李>

【问题讨论】:

  • 如果你升级到 gcc-6,事情会更简单,因为它默认为 C++14 ;-)

标签: linux qt c++11 gcc qt-creator


【解决方案1】:

如此处所述 http://doc.qt.io/qt-5/qmake-variable-reference.html ,您应该在 .pro 文件中添加 CONFIG += c++11

【讨论】:

  • 我已经试过了,没用。也许我缺少一些要安装的软件包?
  • 您确定在您的项目 Kit 中,C++ 编译器设置为 g++ 版本 5.4.0 吗?
  • 是的,在项目包管理器中,编译器的路径是/usr/bin/g++。如果我运行/usr/bin/g++ --version,它会返回 5.4
【解决方案2】:

只需删除 -std=c++11 周围的撇号即可。

QMAKE_CXXFLAGS += '-std=c++11'

应该是

QMAKE_CXXFLAGS += -std=c++11

【讨论】:

  • 看起来你的编译器不支持 c++11 你确定它使用 /usr/bin/g++ 吗?我的设置是 qt 5.2.1、qmake 3.0 和 g++ 4.8.4。
  • 是的,因为 NetBeans 还使用 /usr/bin/g++ 作为编译器,并且设置为标准 c++11 的项目可以正常编译和运行。
  • 我在运行 qmake -std=c++11 时收到错误“***Unknown option -std=c++11”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
相关资源
最近更新 更多