首先,请查看
GCC 4.8中C++11实验性支持的状态。目前只有一个提案尚未正式实现。然后,查看
libstdc++
中C++11实现的状态。你可以看到一些功能尚未实现。尽管如此,我们可以说,在GCC中,C++11支持已经是
完整和可用的。
现在,关于Windows:我个人认为,MinGW-w64是最好的本地(不是Cygwin!)GCC移植版,我认为这是生产质量级别的。你可以在这里下载它。当前(撰写本文时)的最新版本基于GCC 4.8.2。它已经支持了std::thread
。更重要的是,它提供了所有可能的变体:
- 64位目标;
- 32位目标;
- Win32线程;
- POSIX线程;
- SEH异常;
- DWARF异常;
- SJLJ异常。
注意:
选择要下载的发行版时要小心:为了使std::thread
可用,你需要选择带有POSIX线程的版本。
此外,我确认自己已经多次使用这个工具链构建了Qt 4.8.4和4.8.5,甚至是针对64位进行编译。但这还不是全部,在下面列出了我个人使用MinGW-w64构建的一些亮点:
我认为,通过使用MinGW-w64的GCC编译器,能够构建如此庞大和多样化的代码库(例如64位Windows目标),这是MinGW-w64开发团队惊人的成就。这再次证明了该工具链的质量。
Qt 5
最近我使用MinGW-w64 4.8.2,针对x64平台,构建了Qt 5.1.1应用程序框架。总体而言,进展非常顺利,但在构建之前需要解决一些小问题。我已经收集了所有必需的补丁,并编写了一个简单的批处理脚本,可以自动完成打补丁、构建和安装等整个过程。如果您感兴趣,请查看我的Qt for Windows。使用非常简单,我将让你们阅读批处理脚本,而不会进行任何注释。请记住,您需要Unix的patch.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的构建,您可以在此处下载。 最近,它已经退出beta版,请确保查看最新版本。它适用于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的开发人员反应不足并拒绝合作。因此,今天有两个名称相似的项目,有时会引起混淆,但质量和支持上的差异是显而易见的。