2011-03-30 46 views
4

我确信之前已经问过这个问题,但是我整个下午都一直在用头撞砖墙试图弄清楚如何使用XCode实现这一点4.Xcode - 修改库搜索路径基于正在编译代码的设备

我有一个由第三方发布的lib。他们实际上运送了2个不同的版本,一个用于模拟器,另一个用于实际设备。

我想知道,在XCode 4中处理这种情况的推荐方式是什么?在XCode 3中,我可以简单地指定一个新的目标。我希望避免通过包含两个库的lipo来创建一个胖的二进制文件,但如果这是我可用的唯一可行选项,那么就这样吧。

我非常希望做的是修改基于当前设备的项目正在编译,如库搜索路径:

模拟器:/path/to/simulator/lib.a

设备/path/to/device/lib.a

如果我可以自动完成此过程,那么一旦设置完成,它就会变得透明,一切都会变得更好。

非常感谢您花时间阅读本文。

回答

2

您仍然可以在XCode4中创建新的目标 - 只需在导航器侧栏中选择您的项目,选择它并在项目编辑器中选择“新目标”即可。

但是我实际上会推荐你使用lipo来创建一个胖二进制文件。作为构建阶段的一部分,我相信模拟器部分会被剥离出来,所以它不应该影响可执行文件的大小。

7

XCode将$(EFFECTIVE_PLATFORM_NAME)定义为基于目标“设备”的'iphoneos'或'iphonesimulator'。只要你的库路径包括这些字符串中的一个,你可以设置你的目标或项目 LIBRARY_SEARCH_PATHS喜欢的东西:

/path/to/$(EFFECTIVE_PLATFORM_NAME)/lib.a 

提示:您可以通过点击看到这个动作在大楼设置“全部”,然后选择编辑器>显示设置名称编辑器>在菜单中显示设置定义。要查看最终值是否符合您的期望值,请使用编辑器>显示设置值切换回值。

+0

$(EFFECTIVE_PLATFORM_NAME)ftw – fionbio 2013-02-27 17:29:30

+5

失败。 $(EFFECTIVE_PLATFORM_NAME)即使在选择模拟器作为构建目标时也会返回iphoneos。也许这是XCode 7.1中的一个错误? – CommaToast 2015-12-10 05:00:57

+1

我同意@CommaToast这似乎现在是一个错误。经测试W/XCode版本7.2(7C68) – tmoore 2016-01-02 22:02:30