【发布时间】:2012-06-19 10:22:35
【问题描述】:
我正准备和我的朋友一起编写一个跨平台项目。我们决定分别使用 Qt 和 gcc 作为我们的 IDE 和工具链。他在 Linux 上工作,我在 Windows 上工作。
但是,Linux 上的 gcc 不一定是 Windows 上的 gcc。更具体地说,Windows 上的 Qt 使用 gcc 4.4 安装 mingw,而我的朋友使用 gcc 4.7。所以我尝试为 windows 获取更新的 gcc 版本。
我当前的 Qt 版本是 5,并使用从该站点下载和安装的 gcc 4.7:http://www.equation.com/servlet/equation.cmd?fa=fortran
我将它安装在 C:\QtSDK\mingw 并简单地覆盖了 Qt 安装中存在的所有文件。我想如果我只是走捷径,我就不必在 Qt 中重新配置任何东西。
但是,即使使用编译器标志:
QMAKE_CXXFLAGS += -std=c++0x (Qt 4.7)
和
CONFIG += c++11 (Qt5)
IDE 或工具链无法编译简单的基于范围的 for 循环:
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;
}
或初始化列表:
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 之外的其他东西......
我使用了来源:
【问题讨论】:
-
注意:在 Qt5 中使用
QMAKE_CXXFLAGS += -std=c++0x会导致错误“D9002: Ignoring unknown option -std=c++0x”。显然,这个开关在新的 Qt 版本中已经被移除了。 -
对不起,我只是写下关于按钮所说的内容:Qt Creator 2.5 基于 Qt4.8(32 位)于 2012 年 5 月 9 日(Qt5 发布日)构建。我使用的这些信息中是否有任何错误?
-
是的:Qt Creator 不是 Qt。 Qt Creator 2.5 不是“Qt5”。 Qt Creator 是一个 IDE,Qt 是一个应用程序框架。
-
感谢您消除我的误解 :)
-
不客气。这是一个(也是)常见的误解。它发生了很多,它触发了我不太好的一面
:)
标签: c++ qt gcc c++11 cross-platform