【问题标题】:How to point Xcode to an old SDK so it can be used as a "Base SDK"?如何将 Xcode 指向旧的 SDK,以便将其用作“基础 SDK”?
【发布时间】:2012-07-10 14:45:00
【问题描述】:

我的 Mac 设置:

A卷
OS X 10.8
Xcode 4.5 或更高版本 - 10.6 SDK可用作基本 SDK

卷 B
OS X 10.7
Xcode 4.3.3 - 10.6 SDK IS 可作为基础 SDK

C 卷
OS X 10.6
Xcode 4.2 - 10.6 SDK IS 可作为基础 SDK


在 Volume A 上,我安装了 Xcode 4.5,它不包括 10.6 SDK 作为我的构建目标的构建设置中的可用“基础 SDK”。

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

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

如何将 Volume A 上的 Xcode 指向 Volume C 上的 10.6 SDK?

【问题讨论】:

    标签: xcode macos sdk xcode4 xcode5


    【解决方案1】:

    错误的方法。您不会将 Xcode“指向”SDK。相反,将 SDK 复制到 Xcode 安装的适当“SDKs”文件夹中会更好。在现代 Xcode 安装中,这通常是:

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

    将 SDK 复制到那里,退出并重新启动 Xcode,看看你会发现什么。

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

    【讨论】:

    • 谢谢丹尼尔,正是我所需要的。我不知道 SDKs 文件夹去了哪里。这些天应该猜到它存储在 Xcode.app 中。
    • 我发现这是一个比 Rob Napier 建议的进入 smylink 更简单的解决方案。我只需要 6.1,因为 7.0 刚刚问世并炸毁了我基于 6.0 的应用程序界面。
    • 我不同意 - 添加实际的 SDK 会导致重大升级。将较旧的 SDK 保留在根级别是更好更稳定的长期选择。
    【解决方案2】:

    为什么不只是符号链接 SDK 的? “ln -s”?如果这不起作用,则需要进行一些 plist hacking。

    【讨论】:

    • 是的,但问题是我什至不知道将它符号链接到哪里。不用担心,其他人已经回答了我需要的信息。
    【解决方案3】:

    您需要向旧 SDK 添加符号链接(这通常比复制更容易)。

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

    这在 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,只需更改为适当的路径
    • 请注意,Xcode 不会显示不同 SDK 的名称。您会得到多个具有相同名称的选择。通过反复试验找出您想要的 SDK。
    • 归档时如何确保使用正确的 SDK 构建项目?
    • 这对我在 Xcode5 和 iOS 中非常有用。我的步骤: cd 进入 Xcode5 的 SDK 目录。像这样向旧 SDK 添加符号链接:ln -s /Applications/Xcode4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk 使用此方法,Xcode 在最新 SDK 旁边的列表中显示旧 SDK 的名称。
    • 在 Mavericks 上运行 Xcode 5.0.1,我必须复制 SDK,而不是符号链接,才能让它工作。它似乎不想遵循符号链接。可能是安全问题,也许?
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-17
      • 2011-03-03
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      相关资源
      最近更新 更多