cp -R build/Debug/MyFramework.framework /Library/Frameworks
在我的项目中,我然后链接/ Library / Frameworks / MyFramework并将其导入我的类中,如下所示:
#import <MyFramework/MyFramework.h>
这非常有效,除了我总是在调试器控制台中看到以下消息:
Loading program into debugger…
sharedlibrary apply-load-rules all
warning: Unable to read symbols for “/Users/elisevanlooij/Library/Frameworks/MyFramework.framework/Versions/A/MyFramework” (file not found).
warning: Unable to read symbols from “MyFramework” (not yet mapped into memory).
Program loaded.
显然,编译器首先查看/ Users / elisevanlooij / Library / Frameworks,找不到MyFramework,然后查看/ Library / Frameworks,确实找到MyFramework并继续其快乐的方式.到目前为止,这更像是一个烦恼而不是真正的问题,但是当运行单元测试时,gdb停止(文件未找到)并拒绝继续.我通过在Run Script Phase中添加一行来解决这个问题
cp -R build/Debug/MyFramework.framework ~/Library/Frameworks
但感觉就像是在拍摄一些不应该被打破的东西.我怎样才能解决这个问题?
解决方法
安装公共框架(即将由多个应用程序或软件包使用的框架)的首选位置是/ Library / Frameworks [link text],因为“编译时编译器会自动发现此位置的框架”和运行时的动态链接器.“[框架编程指南].最优雅的方法是在Build设置的Deployment部分.
在处理框架时,有时您确实希望在构建时更新框架,而有时则不需要.因此,我仅在发布配置中更改部署设置.所以:
>双击框架目标以显示“目标信息”窗口并切换到“构建”选项卡.
>在“配置”选择框中选择“发布”.
>向下滚动到“部署”部分,然后输入以下值:
Deployment Location = YES (click the checkBox)
Installation Build Products Location = /
Installation Directory = /Library/Frameworks
Installation Build Products Location用作安装的根目录.它的默认值是某个/ tmp目录:如果不将其更改为系统根目录,则永远不会看到已安装的框架,因为它隐藏在/ tmp中.
现在,您可以在调试配置中按照自己的意愿处理框架而不会破坏其他项目,当您准备发布所有需要做的事情时,请切换到Release并执行Build.
Xcode 4警告自从切换到Xcode 4后,我的自定义框架遇到了很多问题.大多数情况下,他们将GDB中的警告链接起来,这些警告并没有真正干扰框架的有用性,除非在运行内置单元测试时.我在一周前向Apple提交了技术支持票,他们仍在调查.当我得到一个有效的解决方案时,我会更新这个答案,因为这个问题已被证明非常受欢迎(1 kViews和计数).