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

时间:2011-12-01 20:13:50

标签: ios xcode build compilation simulator

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

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

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

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

2 个答案:

答案 0 :(得分: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文件指定为仅属于该目标。然后选择应用程序的目标并在Build Phases选项卡的“Target Dependencies”部分添加静态框架。

答案 1 :(得分:0)

您可以使用基于SDK的@client.event async def on_guild_channel_create(channel): #sends a message everytime a new channel is created await channel.send("It's a new channel!") #sends your message to a new channel that was created 有条件地在Xcode中包括/排除文件。例如:

EXCLUDED_SOURCE_FILE_NAMES

有关更多详细信息,请参见Conditional Compilation文章