将OCHamcrest添加到IOS项目中

时间:2011-06-19 23:23:21

标签: xcode unit-testing ochamcrest

项目的文档说只需添加框架和链接器标志,你就可以了。浪费时间的小时和小时后,我已经发现那不是真的。如果这样做,项目将看不到头文件。你必须把框架放在某个地方,编译器会找到标题。在我的情况下,当我将框架放入/ Developer / Library / Frameworks然后告诉它在搜索框架目录(不要乱用头文件搜索目录)时,这是有效的。

然后我得到的问题是链接失败并显示消息:

ld: framework not found OCHamcrestIOS

我注意到该项目的文档说它已针对Xcode 4进行了更新。我在检查代码后删除了框架的二进制文件,浪费了大量时间无法构建框架的IOS版本。

文档为here

我还在文档中注意到cocoa指令告诉你将复制文件阶段放入构建中。我试过了。没有改变结果。

我最后一次陷入漏洞是因为该库是C ++代码。也许这仍然是问题所在。

除非在这里有一个快速的解决方案,我将回到使用STAsserts,因为这个前景令人作呕,这远远更糟。


更新:重新安装Xcode。仍然无法正常工作。有一些廉价的方法可以使这项工作,比如将头文件添加到项目中。关于此问题的blog post是否带来了具有相同经历的人。

2 个答案:

答案 0 :(得分:1)

我在项目中使用了许多框架。一些来自其他人,一些是我的。看一下文档,我建议复制阶段的东西不适合iOS开发。所以我不会这样做。我从https://github.com/jonreid/OCHamcrest下载了最新的zip,它似乎包含一个准备好的iOS静态库。 (不在我的Mac上所以我无法测试确认)。

无论如何,我包含静态库的方式是

  • 选择项目(XCode 4)。
  • 选择我要将库添加到的目标。
  • 选择“构建阶段”选项卡。
  • 展开链接二进制文件与库。
  • 单击[+]按钮添加框架。
  • 单击[添加其他...]按钮并导航到包含< lib> .framework 目录的目录并选择该目录。

多数民众赞成。目标搜索路径将更新为包含框架目录,框架将在项目左侧列出。展开它将显示标题。

你提到的问题听起来像是一些事情。首先,未找到的框架听起来像框架尚未包含在目标中。当您在左侧的项目列表中选择框架时,您应该能够看到右侧显示的目标成员。检查它是否正在编译目标。

其次构建框架并不是一项简单的任务,所以除非你有脚本,否则不要尝试它。我这样说是因为构建iOS静态框架意味着要为模拟器和设备进行编译,将已编译的lib文件组合成通用文件,然后将其和标头存储在特定的目录结构中。

来自OCHamcrest的下载拉链似乎有正确的OCHamcrestiOS.framework。因此,如果您将该目录存储在某处并使用上面概述的步骤链接到该目录,那么它应该可以正常工作。

答案 1 :(得分:0)

因此,我现在采用的解决方案,在经过多次颠簸后,将框架包含在项目中。

  1. 在Xcode项目中创建一个名为Third Party的小组。
  2. 将其链接到名为thirdparty的文件夹。
  3. 转到Xcode中的添加文件并选择框架。
  4. 将其拖到依赖项上。
  5. 运行测试,然后通过!
  6. 这可能是最好的,因为在/ System / Library / Frameworks中引用它会出现一些版本问题,这可以很快设置。此外,我们有一个持续集成的服务器,只要有什么变化不是那么好就必须进入并同步版本。

    感谢您查看,Derek。