首先,请参阅GCC 4.8 中的实验性 C++11 支持状态。只有一项提案尚未正式实施。然后,看看C++11 在libstdc++
. 如您所见,一些功能尚未实现。尽管如此,我们可以说 GCC 中的 C++11 支持或多或少是完整和可用的。
现在,关于 Windows:可能绝对是最好的本地(不是Cygwin !) GCC端口,我个人认为是生产质量,是MinGW-w64。你可以在这里下载。当前(在撰写本文时)最新版本基于 GCC 4.8.2。它已经支持std::thread
. 更重要的是,它提供了所有可能的变化:
- 64位目标;
- 32 位目标;
- Win32线程;
- POSIX 线程;
- SEH 异常;
- 矮人例外;
- SJLJ 例外。
注意:
在选择要下载的发行版时要小心:std::thread
要可用,您需要具有 POSIX 线程的发行版。
此外,我确认我自己已经多次构建了 Qt 4.8.4 和 4.8.5,甚至使用这个工具链针对 64 位。但这还不是全部,这里列出了迄今为止我个人使用 MinGW-w64 构建的一些亮点:
我认为能够使用良好的旧 GCC for Windows 构建像 64 位目标这样庞大而多样的代码库是 MinGW-w64 开发团队的奇迹。它再次证明了工具链的质量。
qt 5
我最近使用针对 x64 的 MinGW-w64 4.8.2 构建了 Qt 5.1.1。总而言之,它进行得很顺利,但是在构建之前必须修补一些小问题。我轻轻地收集了所有需要的补丁,并使用一个简单的批处理脚本自动完成了修补、构建和安装的整个过程。如果您有兴趣,请查看我的Qt for Windows。用法非常简单,我将跳过对它的评论,只是让你们阅读批处理脚本。请记住,您需要 Unixpatch.exe
来应用您可以从 MSYS 或 MSYS2 获得的补丁(见下文)。您可以在此处获取 Qt 5.1.1 源代码。
注意:
重新发明轮子(维护个人构建脚本和 Qt 补丁)似乎不再合理。MSYS2(见下文)现在负责一切。也就是说,如果您需要使用不同的选项和/或标志来重建 Qt,那么只需在PKGBUILD
本地编辑相应的文件并相应地使用该makepkg-mingw
实用程序。
注意:
实际上,Qt 项目官方推荐使用 MinGW-w64 和 MSYS2。
关于 MSYS2
这不是直接问的,但我想在这里添加它,因为这是 MinGW-w64 的姊妹项目,对于必须使用类 Unix 环境为 Windows开发本机软件的任何人来说,它都非常有用。
那些曾经使用过原始MSYS的人可能知道它有多老了。它已经很久没有改进了,所有的 Unix 实用程序都已经过时了。
提供 MinGW-w64 构建(如上所列)的人,现在也提供MSYS2构建,您可以在此处下载。最近,它推出了测试版,因此请务必查看最新版本。它是为 x86 和 x64 架构构建的(带有 MinGW-w64 工具链本身)。所有实用程序都更新到最新版本。例如,您已经可以享受以下内容:Bash 4.2、Make 3.99、Git 1.8.4 等等;开箱即用地在 Windows 上运行!
注意:
确保检查他们的Wiki以顺利开始。
超越MinGW-w64的短篇小说
最初的MinGW改进非常缓慢,其开发人员甚至没有考虑添加 64 位目标生成支持。一位雄心勃勃的人 Kai Tietz 接管了它并分叉了它,因为他的公司需要在 Windows 上构建 64 位目标。MinGW-w64 项目就是这样诞生的。尽管主要目标是添加 64 位支持,但开发人员已经在许多方面改进了工具链并解决了许多其他问题。从那时起,MinGW-w64 项目不断发展壮大,现在在质量方面已经遥遥领先于 MinGW。当 MinGW-w64 向 MinGW 提议加入房屋时和合作,MinGW的开发者反应不足,拒绝合作。结果,今天有两个名称相似的项目有时会引起混乱,但质量和支持方面的差异不言而喻。