如何将Xcode指向旧的SDK,以便将其用作“基本SDK”?

37

我的Mac设置:

Volume A:
OS X 10.8
Xcode 4.5或更高版本-10.6 SDK 不可用作为基本SDK

Volume B:
OS X 10.7
Xcode 4.3.3-10.6 SDK 可用作为基本SDK

Volume C:
OS X 10.6
Xcode 4.2 -10.6 SDK 可用作为基本SDK


在卷A上,我安装了Xcode 4.5,但它不包括10.6 SDK作为我的Build Targets' Build Settings中的可用“Base SDK”。

我在这个硬盘上有一个单独的10.6卷和10.7卷,两者都安装了Xcode,并且我可以在我的Xcode Build Targets' Build Settings中选择10.6 SDK作为Base SDK。

我知道在卷C上安装了10.6 SDK(从旧的Xcode安装中的/Developer/SDKs)。

如何将位于卷C上的10.6 SDK指向卷A上的Xcode?

4个回答

85

你需要添加一个指向旧SDK的符号链接(通常比复制更容易)。

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
ln -s /path/to/old/SDK .

这在10.5版本之前很好用。但超过10.5后,情况会变得有点复杂...

虽然未来版本的Xcode不能保证支持它,但我已与Xcode团队聊过,他们似乎不太愿意改变它。

个人而言,我经常将 /path/to/old/SDK 存储在顶层目录下的 /SDKs 文件夹中。这样每次升级时都很容易修复所有东西。

编辑:我有一个名为 fix-xcode 的脚本,可以简化每次Xcode升级时重新应用此修复操作。


更新:在现代版本的Xcode(7.3+)中,要使用旧的SDK,请编辑此处的 MinimumSDKVersion

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist

这是一个很棒的提示。对于iPhoneOS也适用,只需更改相应的路径即可。 - Aleksandar Vacić
请注意,Xcode不会显示不同SDK的名称。您将获得具有相同名称的多个选择。通过试错找出您想要的SDK。 - HyBRiD
7
这种方法在Xcode5和iOS中对我非常有效。我的步骤是:进入Xcode5的SDK目录。添加一个符号链接到旧的SDK,像这样:ln -s /Applications/Xcode4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk使用这种方法,Xcode将在列表中显示旧的SDK名称以及最新的SDK。 - plusbryan
说实话,你需要一并复制模拟器SDK,并确保使用正确的版本来运行模拟器。 - Jason
1
在Mavericks上运行Xcode 5.0.1时,我不得不复制SDK而不是使用符号链接来使其工作。它似乎不想遵循符号链接。可能是安全问题,也许? - Ryan Ballantyne
显示剩余9条评论

21

错误的方法。你不应该“指向”Xcode的SDK,而是最好将SDK复制到适当的Xcode安装的“SDKs”文件夹中。在现代的Xcode安装中,这通常是:

Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

将SDK复制到这里,退出并重新启动Xcode,看看你能找到什么。

(阅读这里其他答案时,如果你坚决要将原始SDK保留在其他地方,我认为符号链接可能是一种选择)


谢谢Daniel,正是我需要的。我不知道SDKs文件夹去哪了。现在想想,应该猜到它被存储在Xcode.app里了。 - Todd Ditchendorf
我发现这是一个比Rob Napier建议的smylink更简单的解决方案。我只需要6.1,因为7.0刚刚发布并炸毁了我的基于6.0的应用程序界面。 - ctlockey
3
我不同意 - 添加实际的SDK会在主要升级时导致瘫痪。在根目录保留旧的SDK是更好、更稳定的长期选项。 - Jono Guthrie
只写“错误的方法。”而不解释为什么是错误的,这是错误的方法;)。没有人能够验证或评估您的说法。 - Marek R

0
为什么不直接使用符号链接SDK呢?“ln -s”?如果这样不起作用,就需要进行一些plist的修改。

是的,问题是我甚至不知道该将符号链接指向哪里。没关系,其他人已经提供了我需要的信息。 - Todd Ditchendorf

0
通过浏览到旧版本的Xcode.App/Developer/platforms并将iOS 6.1 SDK复制到XCode 5的同一文件夹中解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接