2009-11-15 19 views
7

我的客户端向我提供了两个预编译库blah-device.a和blah-simulator.a。如何让xcode在设备编译模式下使用blah-device.a,并在模拟器编译模式下使用模拟器?如何在XCode for iPhone中为不同的构建配置文件链接不同的预编译库?

我的客户给了我这些指令

  • 打开目标组(在组&文件面板),右键单击 项目图标,然后选择Add> 现有框架。
  • 在链接库部分,单击添加库图标(+)图标, 然后单击添加其他。
  • 选择blah-device.a(用于直接在iPhone 设备上开发)或blah-simulator.a(用于在iPhone Simulator上开发的 ), ,然后单击添加。
  • 我已经复制的头文件在那里,但这些指令不使建筑容易以不同的配置。

    如何获取Xcode的链接等等,device.a与设备配置文件和等等,simulator.a建设与模拟器型材建筑时什么时候?

    任何帮助,非常感谢。

    回答

    5

    有一个更简单的方法来做到这一点。您可以在一个目标下复制“库搜索路径”,并为每个目标设置不同的体系结构。然后,您可以为模拟器和设备设置不同的路径。

    1

    最简单的方法是通过复制现有的目标来创建两个单独的目标。命名一个“Foo Device”和另一个“Foo Simulator”。然后右键单击XCode中的blah-device.a,选择Targets选项卡并确保“Foo Device”目标被选中,并且“Foo Simulator”目标被选中OFF。

    重复的Balah的-simulator.a但这次“富设备”的目标是关和“Foo模拟器”目标被选中ON。

    现在,只要你想要做一个模拟器构建确保您选择从Active SDK弹出与“富模拟器”,从目标弹​​出式模拟器。对于器件测试,选择Device和“Foo Device”目标。

    +0

    谢谢!无论如何要完成这个没有另一个目标,只使用XCode配置文件的构建设置? – CVertex 2009-11-16 03:42:29

    +0

    问题是如果blah-device.a和blah-simulator.a都导出相同的符号。解决这个问题的一个方法是在头文件中基于#if TARGET_IPHONE_SIMULATOR ...进行测试,并将Foo定义为FooDevice与FooSimulator的预处理器宏。然后你可以包含这两个库,并且正确的符号被链接。但是,如果两个库都包含相同的链接器符号,则会出现重复的符号错误。在这种情况下,唯一的办法是排除一个人在一种情况下与另一种情况下的联系。您可以摆弄链接器路径值,但使用多个目标会更容易。 – Ramin 2009-11-16 05:20:32

    14

    以供将来参考,以处理这种情况的好方法是将glob的不同架构。一个公司到一个单一的一个,你可以包括在XCode中。你可以用命令行工具做到这一点:

    脂libx.a liby.a - 创建 - 输出libz.a

    如果libx.a是ARMv6的和ARMv7和liby.a是i386的例如,生成的库libz.a将是armv6,armv7和i386。

    您还可以检查通过脂-info以.a文件。

    希望这会有所帮助。:)

    2

    你可以使用不同的连结路对不同的库 linking path's

    +0

    这是一个很棒的提示,谢谢! – natevw 2018-02-26 20:42:57

    相关问题