如何在XCode for iPhone中为不同的构建配置文件链接不同的预编译库?

时间:2009-11-15 06:37:00

标签: iphone xcode static-linking

我的客户端为我提供了两个预编译库,blah-device.a和blah-simulator.a。如何告诉xcode在设备编译模式下使用blah-device.a并在模拟器编译模式下使用模拟器?

我的客户给了我这些指示

  
      
  1. 打开“目标”组(在“组和文件”面板中),右键单击   项目图标,然后选择添加>   现有框架。
  2.   
  3. 在“链接库”部分中,单击“添加库”图标(+)图标,   然后单击“添加其他”。
  4.   
  5. 选择blah-device.a(直接在iPhone上进行开发)   设备)或blah-simulator.a(for   在iPhone模拟器上开发),   然后单击“添加”。
  6.   

我已经在那里复制了头文件,但是这些说明并没有使用不同的配置文件轻松构建。

在使用SIMULATOR配置文件构建时,如何使用DEVICE配置文件和blah-simulator.a构建Xcode以链接blah-device.a?

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:16)

为了将来参考,处理这种情况的一个好方法是将不同的体系结构.a分成一个可以包含在XCode中的单一体系结构。您可以使用 lipo 命令行工具执行此操作:

lipo libx.a liby.a -create -output libz.a

如果libx.a是armv6而armv7和liby.a是i386,那么生成的库libz.a将是armv6,armv7和i386。

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

希望这会有所帮助。 :)

答案 1 :(得分:6)

有一种更简单的方法可以做到这一点。您可以复制"图书馆搜索路径"在一个目标下,为每个目标设置不同的架构。然后,您可以为模拟器和设备设置不同的路径。

答案 2 :(得分:2)

您可以为不同的库使用不同的链接路径 linking path's

答案 3 :(得分:1)

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

重复balah-simulator.a但这次“Foo Device”目标为OFF并且“Foo Simulator”目标被选中为ON。

现在,无论何时想要进行模拟器构建,请确保从Active SDK弹出窗口中选择模拟器,并从目标弹出窗口中选择“Foo Simulator”。对于设备测试,请选择Device AND“Foo Device”目标。