项目的文档说只需添加框架和链接器标志,你就可以了。浪费时间的小时和小时后,我已经发现那不是真的。如果这样做,项目将看不到头文件。你必须把框架放在某个地方,编译器会找到标题。在我的情况下,当我将框架放入/ Developer / Library / Frameworks然后告诉它在搜索框架目录(不要乱用头文件搜索目录)时,这是有效的。
然后我得到的问题是链接失败并显示消息:
ld: framework not found OCHamcrestIOS
我注意到该项目的文档说它已针对Xcode 4进行了更新。我在检查代码后删除了框架的二进制文件,浪费了大量时间无法构建框架的IOS版本。
文档为here。
我还在文档中注意到cocoa指令告诉你将复制文件阶段放入构建中。我试过了。没有改变结果。
我最后一次陷入漏洞是因为该库是C ++代码。也许这仍然是问题所在。
除非在这里有一个快速的解决方案,我将回到使用STAsserts,因为这个前景令人作呕,这远远更糟。
更新:重新安装Xcode。仍然无法正常工作。有一些廉价的方法可以使这项工作,比如将头文件添加到项目中。关于此问题的blog post是否带来了具有相同经历的人。
答案 0 :(得分:1)
我在项目中使用了许多框架。一些来自其他人,一些是我的。看一下文档,我建议复制阶段的东西不适合iOS开发。所以我不会这样做。我从https://github.com/jonreid/OCHamcrest下载了最新的zip,它似乎包含一个准备好的iOS静态库。 (不在我的Mac上所以我无法测试确认)。
无论如何,我包含静态库的方式是
多数民众赞成。目标搜索路径将更新为包含框架目录,框架将在项目左侧列出。展开它将显示标题。
你提到的问题听起来像是一些事情。首先,未找到的框架听起来像框架尚未包含在目标中。当您在左侧的项目列表中选择框架时,您应该能够看到右侧显示的目标成员。检查它是否正在编译目标。
其次构建框架并不是一项简单的任务,所以除非你有脚本,否则不要尝试它。我这样说是因为构建iOS静态框架意味着要为模拟器和设备进行编译,将已编译的lib文件组合成通用文件,然后将其和标头存储在特定的目录结构中。
来自OCHamcrest的下载拉链似乎有正确的OCHamcrestiOS.framework。因此,如果您将该目录存储在某处并使用上面概述的步骤链接到该目录,那么它应该可以正常工作。
答案 1 :(得分:0)
因此,我现在采用的解决方案,在经过多次颠簸后,将框架包含在项目中。
这可能是最好的,因为在/ System / Library / Frameworks中引用它会出现一些版本问题,这可以很快设置。此外,我们有一个持续集成的服务器,只要有什么变化不是那么好就必须进入并同步版本。
感谢您查看,Derek。