Eli*_*oij 7 xcode cocoa frameworks xcodebuild
我有一个自定义框架,遵循Apple的框架编程指南>> 安装框架中的建议我安装在/ Library/Frameworks中.我通过使用以下脚本添加Run Script构建阶段来完成此操作:
cp -R build/Debug/MyFramework.framework /Library/Frameworks
Run Code Online (Sandbox Code Playgroud)
在我的项目中,我然后链接/ Library/Frameworks/MyFramework并将其导入我的类中,如下所示:
#import <MyFramework/MyFramework.h>
Run Code Online (Sandbox Code Playgroud)
这非常有效,除了我总是在调试器控制台中看到以下消息:
将程序加载到调试器中... sharedlibrary apply-load-rules所有警告:无法读取"/Users/elisevanlooij/Library/Frameworks/MyFramework.framework/Versions/A/MyFramework"(未找到文件)的符号.警告:无法读取"MyFramework"中的符号(尚未映射到内存中).程序已加载.
显然,编译器首先查看/ Users/elisevanlooij/Library/Frameworks,找不到MyFramework,然后查看/ Library/Frameworks,找到MyFramework并继续其快乐的方式.到目前为止,这更像是一个烦恼而不是真正的问题,但是当运行单元测试时,gdb停止(文件未找到)并拒绝继续.我通过在Run Script Phase中添加一行来解决这个问题
cp -R build/Debug/MyFramework.framework ~/Library/Frameworks
Run Code Online (Sandbox Code Playgroud)
但是感觉就像是在拍摄一些不应该被打破的东西.我怎样才能解决这个问题?
Eli*_*oij 12
在过去的几个月里,我学到了很多关于框架的知识,所以我重写了这个答案.请注意,我在谈论安装框架作为开发工作流程的一部分.
安装公共框架(即将由多个应用程序或软件包使用的框架)的首选位置是/ Library/Frameworks [link text],因为"编译时编译器会自动发现此位置的框架"和运行时的动态链接器."[框架编程指南].最优雅的方法是在Build设置的Deployment部分.
在处理框架时,有时您希望在执行构建时更新框架,而有时则不希望更新框架.因此,我仅在发布配置中更改部署设置.所以:
部署位置=是(单击复选框)
安装构建产品位置= /
安装目录=/Library/Frameworks
Installation Build Products Location用作安装的根目录.它的默认值是某个/ tmp目录:如果不将其更改为系统根目录,则永远不会看到已安装的框架,因为它隐藏在/ tmp中.
现在,您可以在调试配置中按照自己的意愿处理框架而不会破坏其他项目,当您准备发布所有需要做的事情时,请切换到Release并执行Build.
Xcode 4警告 自切换到Xcode 4以来,我的自定义框架遇到了许多问题.大多数情况下,他们将GDB中的警告链接起来,这些警告并没有真正干扰框架的有用性,除非在运行内置单元测试时.我在一周前向Apple提交了技术支持票,他们仍在调查.当我得到一个有效的解决方案时,我会更新这个答案,因为这个问题已经证明非常受欢迎(1 kViews和计数).
归档时间: |
|
查看次数: |
12284 次 |
最近记录: |