2011-12-01 204 views
8

我正在使用静态库包含第三方库(源代码)。它仅用于设备(​​因为它包含一些ARM汇编程序),我不想为模拟器构建它(我只是想让我的应用程序在那里编译,所以我可以测试GUI)。编译XCode中的设备/模拟器的不同文件

  • 仅为模拟器创建另一个目标不是一个选项,因为我的项目将我的库引用为依赖项,这将是一个噩梦来维护。
  • 为这些文件添加#if(TARGET_OS_IPHONE)也不是一个选项,因为这些不是我的原始资源,我想更新它们以便更新(有超过200个文件,并且我不需要修改所有的人)

我正在寻找一种方式(类似于#如果(TARGET_OS_IPHONE)在源文件中),这将在IDE本身的工作(这样我就可以排除根据实际的构建过程文件我的目标架构)。我发现唯一的一个选择是从目标中排除/包含文件 - 但不是针对特定体系结构。

有没有办法为每个特定文件设置架构条件?

+0

什么语言的库接口,Obj-C,C++或纯C?有多少种方法包含界面? – Kay

+0

我实际上有几个库,大部分都在C++中,而在Obj-C中很少。它们都不是模拟器所必需的(它们都涉及音频/视频处理),​​但我至少希望项目能够在模拟器上正确构建,因为它在那里测试UI的速度更快。 –

+0

听起来好像没有简单的解决方案。如果可能的话,尝试将抽象工厂创建的一个或多个外观中的所有调用分离到库中,具体取决于目标。然后使用模拟对象的x86代码 – Kay

回答

1

最好的办法是将第三方库分隔成一个新的目标,将其构建为静态框架。将其设置为项目的依赖项,然后将静态框架设置为有条件链接,如Apple所述:http://developer.apple.com/library/ios/documentation/Xcode/Conceptual/ios_development_workflow/115-Configuring_Applications/configuring_applications.html#//apple_ref/doc/uid/TP40007959-CH19-SW7

您可以通过在项目导航器中选择项目然后点击添加目标来添加新目标编辑器窗格底部的按钮。您可以设置一个可可触摸静态库,然后将相关的.m或.c文件分配为仅属于该目标。然后选择您的应用程序的目标,并在“构建阶段”选项卡的“目标相关性”部分中添加静态框架。

+0

这正是我正在寻找,谢谢! –

+0

这个资源的更新链接是什么? – Tobias

相关问题