Xcode - 修改库搜索路径基于正在编译代码的设备

Mic*_*ker 4 iphone xcode xcode4 ios-simulator

我确信之前已经问过这个问题,但是我整个下午一直在用砖头撞墙,试图弄清楚如何使用XCode 4实现这一目标.

我有一个由第三方分发的lib.它们实际上有2个不同的版本,一个用于模拟器,另一个用于实际设备.

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

理想情况下,我想要做的是根据正在编译项目的当前设备修改库搜索路径,例如:

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

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

如果我可以自动化这个过程,那么一旦我设置它,它就是透明的,更好.

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

Yai*_*air 7

XCode $(EFFECTIVE_PLATFORM_NAME)根据目标"设备" 定义为"iphoneos"或"iphonesimulator".只要您的库路径包含其中一个字符串,您就可以 LIBRARY_SEARCH_PATHS在目标或项目中设置如下内容:

/path/to/$(EFFECTIVE_PLATFORM_NAME)/lib.a
Run Code Online (Sandbox Code Playgroud)

提示:您可以通过单击"建筑设置"中的"全部",然后在菜单中选择" 编辑器">"显示设置名称"和" 编辑器">"显示设置定义 "来查看此操作.要查看最终值是否符合预期,请使用" 编辑器">"显示设置值"切换回.

  • 这失败了.即使选择模拟器作为构建目标,$(EFFECTIVE_PLATFORM_NAME)也会返回iphoneos.也许这是XCode 7.1中的一个错误? (5认同)

Ken*_*ner 3

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

不过,我实际上建议您使用 lipo 来创建脂肪二进制文件。我相信模拟器部分作为构建阶段的一部分被删除,因此它不应该影响可执行文件的大小。