首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Qt5编写C++11?

如何使用Qt5编写C++11?
EN

Stack Overflow用户
提问于 2012-06-17 02:38:06
回答 2查看 16.6K关注 0票数 16

我正准备和我的朋友一起编写一个跨平台项目。我们决定分别使用Qt和gcc作为我们的集成开发环境和工具链。他在Linux上工作我在Windows上工作。

然而,Linux上的gcc并不一定就是Windows上的gcc。更具体地说,Windows上的Qt安装了名w和gcc 4.4,而我的朋友安装了gcc 4.7。所以我试着换了一个更新的视窗系统的gcc版本。

我当前的Qt版本是5,使用的是从以下站点下载并安装的gcc 4.7:http://www.equation.com/servlet/equation.cmd?fa=fortran

我将其安装在C:\QtSDK\mingw中,并简单地覆盖了Qt安装中存在的所有文件。我想,如果我只是走最短的路线,我就不需要在Qt中重新配置任何东西。

但是,即使使用编译器标志:

代码语言:javascript
复制
QMAKE_CXXFLAGS += -std=c++0x (Qt 4.7)

代码语言:javascript
复制
CONFIG   += c++11 (Qt5)

IDE或工具链无法编译基于范围的简单for循环:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    int my_array[5] = {1, 2, 3, 4, 5};
    for (auto x : my_array)
        std::cout << x << std::endl;

    return 0;
}

或初始化器列表:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    QVector<int> testsData { 1, 2, 10, 42, 50, 123  };
    QStringList options = { QLatin1String("foo"), QLatin1String("bar")  };

    return 0;
}

然而,看看gcc 4.7的实现细节,这两个功能-甚至更多-应该都是现成的。

有没有其他人尝试过使用Windows版的gcc和Qt?如果是这样,你是如何让它工作的?我想要一个使用gcc 4.6或4.7的解决方案,但如果根本不可能的话,我会接受更少的。

或者,是否有用于Linux和Windows的使用C++11特性的开发环境?我也会满足于Qt之外的东西,如果它只是工作的话……

我使用了以下来源:

C++0x in Qt (Qt 4.7-4.8)

C++11 in Qt5

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-17 02:52:13

代码语言:javascript
复制
QMAKE_CXXFLAGS += -std=c++0x

会导致错误,因为您没有使用MinGW编译器。"D9002:忽略未知选项-std=c++0x“是来自MSVC编译器的错误。

在QtCreator中,转到projects选项卡(在左侧)并更改您正在使用的工具链。如果它没有自动检测到MinGW,您必须通过单击manage按钮自己添加它。

票数 13
EN

Stack Overflow用户

发布于 2012-12-09 17:43:56

更新:

根据此链接:https://wiki.qt.io/How_to_use_C%2B%2B11_in_your_Qt_Projects

现在可以这样做了:

代码语言:javascript
复制
CONFIG += c++11

代码语言:javascript
复制
CONFIG += c++14

另外,升级中的Qt5.7默认情况下将需要C++11编译器,并将放弃对旧版非C++11编译器的支持。

旧版更新:

要启用C++11 -需要使用GCC 4.7及更高版本:

qmake构建系统:

代码语言:javascript
复制
QMAKE_CXXFLAGS += -std=c++11

qbs构建系统:

代码语言:javascript
复制
cpp.cxxLanguageVersion: "c++11"

要启用C++14 - GCC 4.9及更高版本:

qmake构建系统:

代码语言:javascript
复制
QMAKE_CXXFLAGS += -std=c++14

qbs构建系统:

代码语言:javascript
复制
cpp.cxxLanguageVersion: "c++14"

注意:请注意,"c++11“、"c++14”等是区分大小写的。

废弃版本:

qbs构建系统:

代码语言:javascript
复制
cpp.cxxFlags: "-std=c++11"
cpp.cxxFlags: "-std=c++14"

旧版本:

现在推荐在Qt5上使用GCC 4.7。在GCC 4.7中,您可以使用QMAKE_CXXFLAGS += -std=c++11

编辑:使用GCC 4.9现在可以通过传递以下标志来启用C++14 : QMAKE_CXXFLAGS += -std=c+11

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11066068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档