【问题标题】:Xcode 3.2.3 and up - static libs with targets for multiple platformsXcode 3.2.3 及更高版本 - 具有多个平台目标的静态库
【发布时间】:2010-09-24 14:29:56
【问题描述】:

我有一个针对 iPhone 和 os x 的静态库项目。 Xcode 3.2.2 和更早的版本都可以正常工作,但在 3.2.3 中,苹果似乎已经引入了如何处理目标设置的变化。 在 3.2.2 中,我只需从下拉菜单中选择“base-sdk”并为每个目标设置一个目标,iPhone 模拟器、iPhone 设备和 Mac,xcode 将始终为该目标自动构建正确的平台和架构。 现在,对于 xcode 3.2.3 及更高版本,您不能再选择此选项。 在模拟器或设备的目标之间切换不再对您构建的平台产生影响。您总是必须单独选择平台,然后为该平台构建所有目标。 此处已针对模拟器与设备描述了此问题: Targeting multiple platforms in iPhone SDK 4 对于仅限 iPhone 的项目,我可以接受它,并且只有一个目标并与目标分开选择平台。

该更改的真正问题在于项目中有一个 iPhone 和一个 mac 目标: 如果选择了 mac 目标,您将无法再在设备和模拟器之间切换,但它们仍然会影响 mac 目标。 如果在将活动目标从 iPhone 切换到 mac 之前将平台设置为设备,则 xcode 不会找到 mac 目标的 CoreServices,因为它正在 iPhone 设备框架中搜索,而这并不存在。在这种情况下,Xcode 甚至为 arm 构建,目标设置也清楚地告诉它为 i386 构建。 如果切换回iPhone目标,将平台设置为模拟器,然后再次切换回mac目标,找到CoreServices框架,但使用的是模拟器,而不是os x,导致出现几十个“错误: iphone 模拟器核心服务框架中的“CFXMLTreeRef”错误之前的预期声明说明符或“...”,其中未定义,尽管我当然想使用 mac 版框架的 mac 目标。

正如我已经提到的,在 Xcode 版本 3.2.3 之前这一切都可以正常工作。仅适用于 iPhone 或仅适用于 mac 的项目仍在正常构建。

有什么想法,我如何获得具有 iPhone 和 mac 的静态库目标的项目,以使用 Xcode 3.2.3 及更高版本构建?

【问题讨论】:

    标签: iphone xcode macos static-libraries


    【解决方案1】:
    猜你喜欢
    • 2014-03-07
    • 1970-01-01
    • 2016-07-14
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多