繁体   English   中英

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

[英]Compile different files for device/simulator in XCode

我在我的静态库中包含了一个 3rd 方库(源)。 它仅适用于设备(​​因为它包含一些 ARM 汇编例程),我不希望为模拟器构建它(我只希望我的应用程序在那里编译,以便我可以测试 GUI)。

  • 仅为模拟器创建另一个目标不是一种选择,因为我的项目将我的库作为依赖项引用,并且维护起来将是一场噩梦。
  • 为这些文件添加 #if (TARGET_OS_IPHONE) 也不是一个选项,因为这些不是我的原始来源,我想轻松更新它们以进行更新(那里有 200 多个文件,我不想修改所有文件) )

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

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

最好的办法是将第三方库分成一个新目标,将其构建为静态框架。 将其设置为您的项目的依赖项,然后将静态框架设置为有条件地链接,如 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 文件分配给该目标。 然后选择您的应用程序的目标并在 Build Phases 选项卡的“Target Dependencies”部分添加静态框架。

您可以使用基于 sdk 的EXCLUDED_SOURCE_FILE_NAMES有条件地包含/排除 Xcode 中的文件。 例如:

EXCLUDED_SOURCE_FILE_NAMES[sdk=*simulator*] = something.cpp something_else.cpp

有关更多详细信息,请参阅条件编译文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM