我在我的项目中大量使用了 c++0x/c++11 特性,尤其是代码块和共享指针。当我将操作系统升级到 10.8 Mountain Lion(编辑:从 10.7 开始)时,我被迫升级 Xcode。在升级 Xcode 时,我无法编译我的 c++ 项目以在 10.6 系统上部署,因为我收到以下错误。
clang: error: invalid deployment target for -stdlib=libc++ (requires Mac OS X 10.7 or later)
看来,Apple 试图通过不允许开发人员支持 Snow Leopard 来强迫人们进行升级。这让我很生气。啊啊啊!!!
我能做些什么?
编辑:经过多次评论后,应该明确的是 10.6 不附带系统 libc++ 库。因此,仅仅能够为 10.6 部署构建一个 libc++ 项目是不够的。您还需要在 10.6 发行版中包含 libc++ 二进制文件或静态链接到它们。因此,让我们继续假设我已经在这样做。
更新 1:此问题最初旨在与 Xcode 4.5.2 (提出问题时的最新版本)一起使用。我已经升级到 Xcode 4.6.3 并更新了问题和答案以反映这一点。
更新 2:我已经升级到 Xcode 5.0.2。下面所选答案中列出的技术仍然可以按预期工作。
更新 3:我已经升级到 Xcode 5.1。以下答案中列出的技术尚不适用于此版本!
更新 4:我已经升级到 Xcode 6.0.1。下面所选答案中列出的技术似乎再次起作用。
更新 5:我已经升级到 Xcode 7.1.1。下面所选答案中列出的技术似乎再次起作用,但有一个重要警告。您必须禁用用于AppThinning的 Bitcoding,因为开源 LLVM 版本不支持它(也不应该)。因此,您需要在开源和 Apple LLVM clang 之间切换,以便为 10.6 和 tvOS/watchOS 进行编译(因为这些操作系统需要位编码)。