我正准备和我的朋友一起编写一个跨平台项目。我们决定分别使用 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 的解决方案,但如果根本不可能,我会接受更少。
或者,是否有使用 C++11 特性的 Linux 和 Windows 开发环境?如果它能正常工作,我也会满足于 Qt 之外的其他东西......
我使用了以下来源: