快速的回答是:是的,我们可以!
在我进入“它是如何完成的”部分之前,这里有一些关于我的补丁/黑客/修复的说明。从一开始,主要目标就是:
将所有修改保持在最低限度。
我们希望尽可能保持 Xcode 的原始设置。
无论如何,尽量避免修补或修改任何文件。
我们希望所有文件保持原样并保留其原始内容。
除非绝对必要,否则尽量避免移动或复制文件。
我能够保持所有这些目标。几乎所有事情都是通过创建符号链接来完成的。只需替换一个现有的符号链接,我们会在替换之前备份它,以防万一。
如果您不是终端操作专家,我强烈建议您将我回复中的所有终端命令复制/粘贴到您的终端,以避免拼写错误。请记住,即使是间距、引号,尤其是大写字母也很重要。逐行复制/粘贴它们,一次不要超过一行,并在每行粘贴后按回车键以执行命令。如果任何操作提示您输入密码,这将是当前登录的管理员用户的密码(键入时您的按键不显示,这是正常的,不用担心,只需继续输入密码并按回车即可;重新- 如果您有错字并再次收到提示,请尝试)。
先决条件
在开始之前,请确保满足以下条件:
- 您以管理员用户身份登录。
- 您已经启动了 Terminal.app(应用程序/实用程序)并打开了一个终端窗口。
- 您有可用的 Xcode3(例如 3.2.5)和 Xcode4 磁盘映像 (DMG) 或安装程序的副本。
- 如果您已经安装了任一 Xcode 版本,请考虑先将其卸载,以便您可以从全新/干净的设置开始。卸载 Xcode 不会删除您的首选项、配色方案或键绑定自定义。理想情况下,您应该从当前没有安装 Xcode 版本(既不是 3 也不是 4)的系统开始。
第 1 步:安装 Xcode3
重要提示:不要安装 Xcode3 的“系统工具”或“ Unix 开发”包。
是否要安装“ Mac OS X 10.4 SDK ”和/或“文档”取决于您。如果那是带有 iOS SDK 的 Xcode3,是否安装这些也取决于您。
您可以自由选择安装的任何目标文件夹。对于本指南,我选择了“ /Xcode3 ”,但可以随意选择不同的。只要确保相应地更改所有终端命令。
这里给出的步骤顺序通常并不重要,但我强烈建议你不要交换第 1 步和第 2 步。Xcode 总是在所选目标文件夹之外安装几个文件,相信我,最终你想要磁盘上这些文件的 Xcode4 版本。通过在 Xcode4 之前安装 Xcode3,您可以确保 Xcode4 会在必要时覆盖这些文件。我曾经交换过第 1 步和第 2 步,最后我遇到了一些相当奇怪的问题,这些问题可能与错误的顺序有关(我不能肯定地说,但在以正确的顺序重新安装后,问题就消失了)。
第 2 步:安装 Xcode4
选择您喜欢的任何数据包。建议安装“系统工具”,但并非绝对必要(尽管大多数人迟早会错过该功能)。
同样,随意选择您喜欢的任何目标文件夹。对于本指南,我选择了普通的目标文件夹“ /Developer ”,如果您选择不同的文件夹,请相应地更改所有终端命令。
第 3 步:恢复 10.4/10.5 SDK 支持
切换到终端窗口并运行以下命令:
cd /开发人员/SDK
须藤 ln -s /Xcode3/SDKs/MacOSX10.4u.sdk 。
须藤 ln -s /Xcode3/SDKs/MacOSX10.5.sdk 。
当然,如果您在步骤 1 中还安装了 SDK 10.4,则只运行 10.4u 的命令。
这足以将 SDK 10.5(可能还有 10.4)带回 Xcode4 中的选择列表。喜欢就试试吧。启动 Xcode4,打开一个项目,尝试更改所选的 SDK。那很容易,对吧?在继续下一步之前,请务必再次关闭 Xcode4(应用程序,而不仅仅是窗口)。
第 4 步:恢复 GCC 4.0 支持
如果您尚未安装 MacOS 10.4 SDK 或者您不打算使用它,您可以安全地跳过此步骤并继续执行步骤 5。
要使用 SDK 10.4,您必须使用 GCC 4.0,GCC 4.2 将无法工作。Apple 声称 GCC 4.2 与 SDK 10.4 不兼容,好吧,如果你问我,这是一个骗局。我已经不止一次地覆盖了这个限制,因此从来没有出现过最小的问题。修改 SDK 10.4 以便 Xcode 允许您使用 GCC 4.2 很容易,但我的目标是避免所有文件修改,所以我们只需将 GCC 4.0 支持添加回 Xcode,这也是一件好事,因为一些项目确实依赖于 GCC 4.0(例如,GCC 4.2 中有一些错误会阻止有效的内联汇编代码无错误地编译,而相同的代码在 GCC 4.0 和 GCC 4.4 上可以完美地编译)。
返回终端:
cd /开发者/usr/bin
须藤 ln -s /Xcode3/usr/bin/*4.0* 。
cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10
须藤 ln -s /Xcode3/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1 。
现在我们已经恢复了对 GCC 4.0 的全面支持,除了 GCC 4.0 在 Xcode4 中仍然不可选择。那是因为 Xcode4 不再有 GCC 4.0 编译器插件。幸运的是 Xcode3 插件也可以在 Xcode4 中使用,只是位置发生了根本性的变化。Apple 现在将这些插件隐藏在捆绑包的深处,并且似乎只有那里的插件可以工作,将它们放在旧位置似乎没有任何效果。
cd /Developer/Library/Xcode/PrivatePlugIns
cd Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins
sudo ln -s "/Xcode3/Library/Xcode/Plug-ins/GCC 4.0.xcplugin" 。
现在再次启动 Xcode4,打开一个项目并尝试选择编译器。您应该将 GCC 4.0 重新列入列表。现在您实际上已经可以选择 SDK 10.4 或 10.5、GCC 4.0 并且构建 PPC 二进制文件应该没有问题。只需为“架构”构建设置选择“其他... ”并手动输入“ ppc ”,然后将“有效架构”更改为也包括“ ppc ”。我们几乎完成了,除了尝试使用 GCC 4.2 和 SDK 10.5 构建 PPC 二进制文件仍然会失败。
第 5 步:恢复对 GCC 4.2 的 PPC 支持
由于 Apple 仅在 Xcode4 中支持 Intel 平台,因此并非所有 GCC 4.2 工具都支持 PPC。有一个重要的工具没有 PPC 支持,该工具被命名为“ as ”,它是 GNU Assembler。要使用 GCC 4.2 编译 ppc/ppc64 二进制文件,我们需要使用支持 ppc/ppc64的“ as ”版本。这是唯一一个文件(实际上它也是一个符号链接),我们必须先将其移到一边(制作备份副本),然后才能用符号链接替换它:
cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
须藤 ln -s /Xcode3/usr/bin/as 。
第 6 步:没有第 6 步
这就是所有人。考虑到这很容易,您可以想象 Apple 肯定没有放弃 SDK 10.4/10.5 或 ppc/ppc64 或 GCC 4.0 支持,因为这是必要的,他们放弃了所有这些,因为他们想放弃它。
我希望此设置对您和我一样适用。我已经能够在 Xcode4 中编译所有旧项目而无需进行任何重大更改,除了必须在这里和那里更改搜索路径。
PS:
我在这里回答我自己的问题可能看起来很奇怪,但是由于我已经找到了如何自己解决这个问题,所以我想与社区分享我的知识,因为我相信这是非常有价值的输入所有 MacOS 开发人员。这个问题已经在很多地方被问过很多次了,到目前为止,我从未见过有人提出类似的解决方案。分享财富,传播知识等等,你懂我的意思。
如果您仍有问题/疑问:
如果您对此主题还有其他问题,或者您仍然无法正确构建旧项目,请按照 Stack Overflow 的设计目标:点击本页右上角的“提问”并创建一个新问题. 这样,整个社区都可以帮助您解决这些问题,因为这些问题可能不会直接(甚至可能不是间接)与此 hack 相关。
我建议你在问题的一开始就提到你确实应用了这个技巧。也许您甚至想直接链接到这个问题,以便从未听说过此 hack 的人可以轻松查找。否则,当您提到 SDK 10.4/10.5、PPC 或 GCC 4.0 与 Xcode4 结合使用时,大多数人会感到困惑,而 Xcode4 官方都不支持这两者。如果您忘记提及此 hack,您可能会收到相当愚蠢的评论而不是体面的回复。
请不要在此处以回复或评论的形式发布您的问题或问题。将它们作为回复发布是没有意义的,因为它们不是回复,而且除了使用评论之外,人们无法回复您,并且评论可能无法提供足够的空间来对您的问题进行体面的回复或为您的问题提供体面的解决方案问题。将它们作为评论发布意味着您的空间非常有限,并且由于评论没有树状层次结构,因此很难跟踪回复评论(此外,它们仍然会为体面的回复/解决方案提供很小的空间)。谢谢你。
当然,总是欢迎其他类型的评论以及对原始问题的更好答复;-)