关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
6年前关闭。
Improve this question
目前哪个 C++ 编译器在 Windows 平台上具有完整的 C++11 支持?
Microsoft 编译器目前没有完整的 C++11 支持(并且不会很快添加)。
MinGW g++(来自 mingw.org)不支持 std::thread
盒子外面。它也无法编译 Qt 4 源(在构建 QtGuid4.dll 时内存不足,已知的解决方法对我不起作用)。
我已经浪费了几天时间尝试在 Windows 上使用 clang,设法编译它,但无法启用 c++11 支持,因为它需要 libstdc++,(我认为)当时没有移植到 windows 平台。 Qt 4也不支持它。
那里还有什么?我已经为 C++03 工作了很长时间,我想尝试一下新功能,但我真的不想要一个支持不完整的工具(这会在编写代码时增加额外的麻烦)代码)或在链接库时内存不足(在 8GB 系统上)。
我正在使用 Windows 7 64 位,虽然有 64 位支持会很好,但我最感兴趣的是 32 位应用程序,因此生成 64 位可执行文件的能力是可选的。
有什么建议?
最佳答案
首先看 Status of Experimental C++11 Support in GCC 4.8 .只有一项提案尚未正式实现。那么,看看 Implementation Status of C++11 in libstdc++
.如您所见,有些功能尚未实现。尽管如此,我们可以说 GCC 中的 C++11 支持或多或少是完整和可用的。
现在,关于 Windows:可能绝对是最好的本地(不是 Cygwin !)端口 GCC ,我个人认为是生产质量,是 MinGW-w64 .您可以下载 here .当前(在撰写本文时)最新版本基于 GCC 4.8.2。它已经支持 std::thread
.更重要的是,它提供了所有可能的变化:
注意:
选择要下载的发行版时要小心:对于
std::thread
要可用,您需要具有 POSIX 线程的那个。此外,我确认我自己已经多次构建 Qt 4.8.4 和 4.8.5,甚至使用此工具链针对 64 位。但这还不是全部,这里列出了迄今为止我个人使用 MinGW-w64 构建的一些亮点:
我认为能够使用适用于 Windows 的老式 GCC 构建 64 位目标这样庞大而多样的代码库是 MinGW-w64 开发团队的奇迹般的成就。它再次证明了工具链的质量。
Qt 5
我最近使用针对 x64 的 MinGW-w64 4.8.2 构建了 Qt 5.1.1。总而言之,它进行得很顺利,但是在构建之前必须修补一些小问题。我轻轻地收集了所有需要的补丁,并使用一个简单的批处理脚本自动完成了打补丁、构建和安装的整个过程。如果您有兴趣,请查看我的 Qt for Windows .用法非常简单,我将跳过对其进行评论,而只是让你们阅读批处理脚本。请记住,您需要 Unix 的
patch.exe
应用您可以获得的补丁,例如,从 MSYS 或 MSYS2(见下文)。您可以获得Qt 5.1.1源代码 here .注意:
重新发明轮子(维护 Qt 的个人构建脚本和补丁)似乎不再合理。 MSYS2(见下文)现在负责 everything .也就是说,如果您需要使用不同的选项和/或标志重建 Qt,那么只需编辑相应的
PKGBUILD
本地文件并使用 makepkg-mingw
效用相应。注意:
实际上,Qt 项目 officially recommends using MinGW-w64 and MSYS2 .
关于 MSYS2
这不是直接问的,但我想在这里添加它,因为这是 MinGW-w64 的姊妹项目,对于必须使用类 Unix 环境为 Windows 开发 native 软件的任何人都非常有用。
那些曾经使用过原版的人 MSYS 大概知道多少岁了。它已经很久没有改进了,所有的 Unix 实用程序都已经过时了。
提供 MinGW-w64 构建(上面列出)的人,现在还提供了 的构建MSYS2 您可以下载 here .最近,它出来了测试版,所以一定要查看最新版本。它是为 x86 和 x64 架构构建的(使用 MinGW-w64 工具链本身)。所有实用程序都更新为最新版本。例如,您已经可以享受以下内容:Bash 4.2、Make 3.99、Git 1.8.4 等等;它开箱即用地在 Windows 上运行!
注意:
一定要检查他们的 Wiki 有一个顺利的开始。
超越 MinGW-w64 的短篇小说
原 MinGW 改进非常缓慢,其开发人员甚至没有考虑添加 64 位目标生成支持。由于他的公司需要在 Windows 上构建 64 位目标,一位雄心勃勃的人 Kai Tietz 接管了它并将其 fork 。 MinGW-w64 项目就是这样诞生的。尽管主要目标是添加 64 位支持,但开发人员已在许多方面改进了工具链并解决了许多其他问题。从那时起,MinGW-w64 项目不断发展,现在在质量方面远远领先于 MinGW。当MinGW-w64向MinGW提出加入房屋共同合作时,MinGW的开发商 react 不足,拒绝合作。结果,今天有两个名称相似的项目,有时会引起混淆,但质量和支持的差异不言而喻。
关于c++ - 具有完整 C++11 支持的 Windows C++ 编译器(应该与 Qt 一起使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19425482/