Sig*_*erm 51 c++ windows qt c++11
哪个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位可执行文件的能力是可选的.
有什么建议?
Ale*_*aev 65
首先,请参阅GCC 4.8中的实验C++ 11支持状态.只有一项提案尚未正式实施.然后,看看C++ 11的实现状态libstdc++
.正如您所看到的,某些功能尚未实现.尽管如此,我们可以说GCC中的C++ 11支持或多或少是完整和可用的.
现在,关于Windows:可能绝对是GCC的最佳本地(不是Cygwin!)端口,我个人认为生产质量,是MinGW-w64.你可以在这里下载.目前(撰写本文时)最新版本基于GCC 4.8.2.它已经得到了支持.更重要的是,它提供了所有可能的变化:std::thread
注意:
选择要下载的分发版时要小心:std::thread
要使用,需要具有POSIX线程的分发版.
此外,我确认我已经多次构建Qt 4.8.4和4.8.5,甚至使用此工具链定位64位.但这还不是全部,这里列出了迄今为止我用MinGW-w64亲自构建的一些亮点:
我认为能够构建如此庞大且多样化的代码库,如64位目标和良好的旧GCC for Windows,是MinGW-w64开发团队的一项奇迹般的成就.它再次证明了工具链的质量.
我最近使用针对x64的MinGW-w64 4.8.2构建了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.
这不是直接问的,但我想在这里添加它,因为这是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在改进方面非常缓慢,其开发人员甚至没有考虑添加64位目标生成支持.一个野心勃勃的家伙Kai Tietz接管了它并将其分叉,因为他的公司需要在Windows上构建64位目标.这就是MinGW-w64项目的诞生方式.尽管主要目标是增加64位支持,但开发人员已经在许多方面改进了工具链,并解决了许多其他问题.从那以后,MinGW-w64项目不断发展,现在在质量方面远远领先于MinGW.当MinGW-w64向MinGW提议加入这些房屋时并且合作,MinGW的开发人员反应不足,拒绝合作.因此,今天有2个名称相似的项目有时会引起混淆,但质量和支持的差异不言而喻.
核心语言明智,Clang 3.3和GCC 4.8.1已经完全符合C++ 11(无论它们是否是无错误的另一个主题).库(STL)明智,Clang 3.3(使用libc ++,但是你知道,libc ++在windows和linux中都不可用)是唯一完全符合C++ 11的平台.
MSVC,最新的Visual C++ 2013(目前是RC,将在2天内完成RTM,将于11月13日推出)在核心语言和STL方面为C++ 11提供了更好的支持,认为还不完整.STL明智,afaik,它是完整的.
我认为这取决于您的代码真正使用的功能.是否已使用所有C++ 11新功能?如果Visual C++ 2013的功能集可以满足您,请尝试它.否则,clang已经提供了一个可以集成到Visual Studio的Windows端口,并且可以链接到本机(msvc c ++运行时)库(已声明),我想你也可以试用它.
此外:可视C++14分之11一致性路线图 https://udta1g.blu.livefilestore.com/y2pMXBJL7l2a5UOf_pXnLXghSUhPWK8w5skFyc50SVFcMjVwa1guQnM6R0NNLN1buBUNPGbLBejpYXXBXSbqshQKKWVfQxvJjk2jGRPPbL-UBu7gaao4RxifZgPXY5ksdei/image1.png?psid=1
归档时间: |
|
查看次数: |
43949 次 |
最近记录: |