Xcode 3.2.3和up - 带有多个平台目标的静态库

时间:2010-09-24 14:29:56

标签: iphone xcode macos static-libraries

我有一个带有iPhone和os x目标的静态lib项目。 使用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 one,这导致了几十个“错误的问题: iphone模拟器核心服务框架中的'CFXMLTreeRef'错误之前的预期声明说明符或'...',这里没有定义,虽然我当然希望使用mac版本的框架作为mac target。

正如我已经提到的,在Xcode版本3.2.3之前,这一切都运行良好。仅适用于iPhone或仅适用于Mac的项目仍在建设中。

任何想法,我如何使用Xcode 3.2.3及更高版本构建具有iPhone和Mac的静态库目标的项目?

1 个答案:

答案 0 :(得分:1)