在XCode中编译设备/模拟器的不同文件

Gil*_*vik 8 xcode simulator compilation build ios

我在我的静态库中包含了第三方库(源代码).它只用于设备(​​因为它包含一些ARM程序集例程),我不希望为模拟器构建它(我只是希望我的应用程序在那里编译,所以我可以测试GUI).

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

我正在寻找一种方法(类似于源文件中的#if(TARGET_OS_IPHONE)),它可以从IDE本身工作(因此我可以根据我的目标架构从实际构建过程中排除文件).我发现的唯一一个选项是从目标中排除/包含文件 - 但不是针对特定的体系结构.

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

Shi*_*ara 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

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