快速的答案是:是的,我们可以!
在进入“ 如何完成 ”部分之前,这里有一些有关我的补丁/黑客/补丁的说明。从一开始,主要目标就是:
将所有修改保持在最低限度。
我们希望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
sudo ln -s /Xcode3/SDKs/MacOSX10.4u.sdk。
sudo 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将无法使用。苹果声称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
sudo ln -s /Xcode3/usr/bin/*4.0*。
光盘/ Developer / usr / libexec / gcc / powerpc-apple-darwin10
须藤ln -s /Xcode3/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1。
目前,我们已经恢复了对GCC 4.0的完全支持,除了在Xcode4中仍无法选择GCC 4.0的事实。这是因为Xcode4不再具有GCC 4.0编译器插件。幸运的是,Xcode3插件也可以在Xcode4中使用,只是位置发生了根本变化。苹果现在将这些插件隐藏在捆绑软件的深处,并且只有那里的插件才起作用,将它们放回原来的位置似乎没有效果。
cd /开发人员/库/ 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汇编器。要使用GCC 4.2编译ppc / ppc64二进制文件,我们需要使用支持ppc / ppc64 的“ as ”版本。这是我们必须首先移开(制作备份副本)的唯一文件(实际上也是符号链接),然后才能用符号链接替换它:
光盘/Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
须藤MV as.bak
须藤ln -s / Xcode3 / usr / bin / as。
步骤6:没有步骤6
那是所有人。考虑到这有多么容易,您可以想象苹果肯定没有放弃SDK 10.4 / 10.5或ppc / ppc64或GCC 4.0支持,因为这是必须的,他们放弃了所有这些,因为他们想放弃它。
我希望此设置对您和我都一样有效。除了不必在此处和此处更改搜索路径之外,我已经能够在Xcode4中编译所有旧项目,而无需进行任何重大更改。
PS:
我在这里回答自己的问题可能看起来很奇怪,但是由于我已经找到了自己解决所有问题的方法,因此我想与社区分享我的知识,因为我认为这对所有MacOS开发人员。这个问题在很多地方被问过很多次,到目前为止,我还从未见过有人提出过类似的解决方案。分享财富,传播知识等等,您知道我的意思。
如果您仍有问题/疑问:
如果您对此主题还有其他疑问,或者仍然无法正确构建旧项目,请执行堆栈溢出的设计目的:单击此页面右上角的“提问”,然后创建一个新问题。 。这样,整个社区就可以帮助您解决这些问题,因为这些问题可能与该黑客没有直接(甚至不是间接)相关。
我建议您提及一个事实,即您在问题的开始就确实应用了此技巧。也许您甚至想直接链接到此问题,以便从未听说过此黑客的人们可以轻松地查找它。否则,当您将SDK 10.4 / 10.5,PPC或GCC 4.0与Xcode4结合使用时,大多数人会很困惑,后者正式不支持这两种方式。如果您忘记提及此hack,您可能会得到愚蠢的评论,而不是像样的答复。
请不要在此处以答复或评论的形式发布您的问题或问题。将它们作为答复发布是没有意义的,因为它们不是答复,并且人们无法使用评论来回复您,其他方式是使用评论,并且评论可能没有足够的空间为您提供对问题的体贴或对您的体面解决方案问题。并且将它们作为评论发布意味着您将被限制在很小的空间内,并且由于评论没有像树一样的层次结构,因此很难跟踪回复评论(此外,它们仍然为体面的回复/解决方案提供了很小的空间)。谢谢。
当然,总是欢迎其他类型的评论以及对原始问题的更好答复;-)