在 Mac OS X Snow Leopard 上使用 Xcode 的 C++11

标签 c++ xcode macos c++11

我的项目有时在 Windows/Visual Studio 2010 上开发并使用一些 C++11 功能,我需要能够在 Mac OS X 上开发/构建。当我尝试使用 Xcode 构建项目时,我在新的 C++11 功能方面遇到了很多错误,并检查了 gcc 版本,发现它很旧 (4.2)。 看起来 Apple 试图通过拒绝在任何其他版本的 Mac OS 上下载 Xcode 4+ 来迫使开发人员为 Lion 支付不必要的升级费用,因此我只剩下 Xcode 3.x。

如何在 Snow Leopard 上继续使用 C++11?有没有一种方法可以做到这一点并将 Xcode 保持为 IDE?

最佳答案

2012 年 2 月 25 日更新:现在有许多功能可供您使用最新的 clang。 也许如果您只使用语言功能,您可以将目标定为 10.6。如果您需要库功能,则需要 10.7。


鉴于 Xcode 工具集的当前(2011 年 9 月 24 日)状态,如果您需要 c++11 支持,选择另一个 ide 或 os 是最简单的(IMO)。

xcode 使用的 gcc 分支永远不会支持这些功能。 clang 远远落后于 c++11 特性(因为它的 c++ 实现仍然很新,其他编译器已经有几年了)。因此,无论您使用的 osx 版本如何,xcode 随附的编译器目前都不支持足够的 c++11 开发功能。

您可以安装较新版本的 gcc 并相当轻松地使用另一个 ide。

从技术上讲,您还可以为 xcode 3(未正式支持)制作一个插件,它会调用另一个编译器(例如最新版本的 gcc)。该路线已在 xc4 (afaik) 中关闭。 Update 显然,它在 Xc4 中仍然可用;请参阅下面的 idljarn 评论。

对于许多项目,仅使用 mac 启动到 linux 或 windows(或使用虚拟化)会更容易。

你最后的选择是英特尔的编译器,它可以在 xcode 中使用,并提供相当数量的 c++11 支持——在你购买之前用 xcode 试试看它是否符合你的需要,与 xcode 兼容,并且支持您的团队使用的 c++11 功能。

最后,我不认为他们这样做是为了您的升级费用。他们真的没有很好地维护多个版本的 xcode——他们只是希望你保持最新和最好的状态,除非你需要向后兼容;在这种情况下,您只需停止升级即可。在 gcc 的许可证更改后,他们投资并协助开发了 clang。所以是的...... osx 一直远远落后于 wrt c++11 支持,因为他们决定切换到另一个(非常年轻的)编译器。如果你等待 xcode 支持 c++11,你将不得不等待 clang 支持它,这可能需要相当长的时间。

关于在 Mac OS X Snow Leopard 上使用 Xcode 的 C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543236/

相关文章:

c++ - OpenMP:每个线程都有一个完整的 'for' 循环

带方法的 C++ 结构,不带方法的 C 声明

c++ - 包含动态类的 STL 容器的 lldb C++ 调试

iphone - 解锁 iPhone 设备以继续吗?

swift - WatchOS 警告 : rejected resignFirstResponder when being removed from hierarchy

PHP 编译失败,体系结构 x86_64 的 undefined symbol ,macOS Sierra 上的 libiconv

c - 函数插入,标记 C 函数总是使用符号 stub 而不是直接调用

macos - 无法在 Mac 上更新主机文件

c++ - 关于 C++ 中结构的模板

objective-c - mouseDown COCOA 下的对象