首先,请参阅GCC 4.8 中实验性 C++11 支持的状态 http://gcc.gnu.org/gcc-4.8/cxx0x_status.html。只有一项提案尚未正式实施。然后,看看C++11 的实现状态libstdc++ http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011。正如您所看到的,一些功能尚未实现。尽管如此,我们可以说 GCC 对 C++11 的支持或多或少complete并可用。
现在,关于 Windows:可能 绝对是最好的native (not Cygwin http://www.cygwin.com/!) 港口GCC http://gcc.gnu.org/,我个人认为生产质量是明GW-w64 http://mingw-w64.sourceforge.net/。你可以下载它here http://mingw-w64.sourceforge.net/download.php#mingw-builds。当前(在撰写本文时)最新版本基于 GCC 4.8.2。它已经支持std::thread
。更重要的是,它提供了所有可能的变化:
- 64 位目标;
- 32 位目标;
- Win32 线程;
- POSIX 线程;
- SEH 例外;
- 矮人例外;
- SJLJ 例外。
NOTE:
选择下载哪个发行版时要小心:std::thread
为了可用,您需要具有 POSIX 线程的线程。
此外,我确认我自己已经多次构建了 Qt 4.8.4 和 4.8.5,甚至使用此工具链针对 64 位。但这还不是全部,这里列出了迄今为止我个人使用 MinGW-w64 构建的一些亮点:
-
Boost C++ 库 http://www.boost.org/;
-
Qt http://www.qt.io/;
-
LLVM/铿锵 http://clang.llvm.org/;
-
谷歌 V8 JavaScript 引擎 https://code.google.com/p/v8/;
-
ODB:C++ 对象关系映射 (ORM) http://www.codesynthesis.com/products/odb/;
-
SQLite http://www.sqlite.org/;
-
GLEW http://glew.sourceforge.net/;
-
Vim http://www.vim.org/;
-
ncurses http://www.gnu.org/software/ncurses/;
- etc...
我认为能够使用适用于 Windows 的旧 GCC 构建如此庞大且多样化的代码库(如 64 位目标)是 MinGW-w64 开发团队的奇迹般的成就。再次证明了工具链的质量。
Qt 5
我最近使用面向 x64 的 MinGW-w64 4.8.2 构建了 Qt 5.1.1。总而言之,一切进展顺利,但有一些小问题需要在构建之前修复。我已经收集了所有必需的补丁,并使用一个简单的批处理脚本自动化了修补、构建和安装的整个过程。如果您有兴趣,请查看我的适用于 Windows 的 Qt https://bitbucket.org/Alexander-Shukaev/qt-for-windows。用法非常简单,我将跳过对其进行评论,只是让你们阅读批处理脚本。请记住,您需要 Unixpatch.exe
应用您可以从 MSYS 或 MSYS2 等处获得的补丁(见下文)。您可以获得Qt 5.1.1源代码here http://download.qt.io/archive/qt/5.1/5.1.1/single/qt-everywhere-opensource-src-5.1.1.zip.
NOTE:
重新发明轮子(维护 Qt 的个人构建脚本和补丁)似乎不再合理。 MSYS2(见下文)现在负责一切 http://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-qt5。也就是说,如果您需要使用不同的选项和/或标志重建 Qt,则只需编辑相应的PKGBUILD http://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-qt5/PKGBUILD本地文件并使用makepkg-mingw http://sourceforge.net/p/msys2/wiki/Contributing%20to%20MSYS2/相应的效用。
NOTE:
实际上,Qt项目官方推荐使用MinGW-w64和MSYS2 http://wiki.qt.io/MinGW-64-bit.
关于MSYS2
这没有直接询问,但我想在这里添加它,因为这是 MinGW-w64 的姐妹项目,对于任何需要开发的人来说都非常有用native适用于使用类 Unix 环境的 Windows 的软件。
那些曾经使用过原版的人MSYS http://www.mingw.org/wiki/MSYS大概知道它有多大了。它已经很久没有得到改进了,而且所有的 Unix 实用程序都已经过时了。
提供 MinGW-w64 版本(上面列出)的人现在还提供MSYS2 http://sourceforge.net/projects/msys2/你可以下载here http://sourceforge.net/projects/msys2/files/Base/。最近,它已经结束测试版,因此请务必查看最新版本。它是为 x86 和 x64 架构构建的(带有 MinGW-w64 工具链本身)。所有实用程序均已更新至最新版本。例如,您已经可以享受以下内容:Bash 4.2、Make 3.99、Git 1.8.4 等等;开箱即用,可在 Windows 上本机运行!
NOTE:
请务必检查他们的Wiki http://sourceforge.net/p/msys2/wiki/Home/有一个顺利的开始。
超越 MinGW-w64 的短篇故事
原本的MinGW http://www.mingw.org/改进非常缓慢,其开发人员甚至没有考虑添加 64 位目标生成支持。一位雄心勃勃的人 Kai Tietz 接管了它并分叉了它,因为他的公司需要在 Windows 上构建 64 位目标。这就是 MinGW-w64 项目的诞生。尽管主要目标是添加 64 位支持,但开发人员在许多方面改进了工具链并解决了大量其他问题。从那时起,MinGW-w64 项目不断发展,现在在质量方面远远领先于 MinGW。当 MinGW-w64 向 MinGW 提议加入房屋并共同努力,MinGW的开发者表现出反应不足,拒绝合作。因此,今天有两个项目名称相似,有时会造成混乱,但质量和支持方面的差异是不言而喻的。