Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 将OCHamcrest添加到IOS项目_Xcode_Unit Testing_Ochamcrest - Fatal编程技术网

Xcode 将OCHamcrest添加到IOS项目

Xcode 将OCHamcrest添加到IOS项目,xcode,unit-testing,ochamcrest,Xcode,Unit Testing,Ochamcrest,该项目的文档说,只要添加框架和链接器标志,就可以了。一小时又一小时的浪费时间之后,我发现那不是真的。如果这样做,项目将看不到头文件。你必须把框架放在某个地方,编译器才能找到标题。在我的例子中,当我将框架放到/Developer/Library/Frameworks中,然后告诉它在搜索该框架目录时递归(不要摆弄搜索目录的标题)时,这就起到了作用 然后我遇到的问题是链接失败,并显示以下消息: ld: framework not found OCHamcrestIOS 我注意到该项目的文档中说它是为

该项目的文档说,只要添加框架和链接器标志,就可以了。一小时又一小时的浪费时间之后,我发现那不是真的。如果这样做,项目将看不到头文件。你必须把框架放在某个地方,编译器才能找到标题。在我的例子中,当我将框架放到/Developer/Library/Frameworks中,然后告诉它在搜索该框架目录时递归(不要摆弄搜索目录的标题)时,这就起到了作用

然后我遇到的问题是链接失败,并显示以下消息:

ld: framework not found OCHamcrestIOS
我注意到该项目的文档中说它是为Xcode 4更新的。在检查了代码后,我删除了框架的二进制文件,并且浪费了大量时间无法构建框架的IOS版本

文件是

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

上次我掉进了一个下沉的坑里,是因为图书馆是C++代码。也许这仍然是问题所在

除非这里有一个快速的解决方案,否则我将继续使用Statsserts,尽管前景令人恶心,但情况要糟糕得多



更新:重新安装的Xcode。还是不行。有一些廉价的方法可以实现这一点,比如将头文件添加到项目中。我对此做了一个调查,结果发现一个人也有同样的经历。

我在项目中使用了许多框架。有些是别人的,有些是我的。看一下文档,我认为复制阶段的东西不适合iOS开发。所以我不会那样做。我从下载了最新的zip,它似乎包含一个现成的iOS静态库。(不在我的mac电脑上,因此我无法测试以确认)

无论如何,我包含静态lib的方法是

  • 选择项目(XCode 4)
  • 选择要将库添加到的目标
  • 选择构建阶段选项卡
  • 展开链接二进制与库
  • 单击[+]按钮添加框架
  • 单击[添加其他…]按钮,导航到包含.framework目录的目录并选择该目录
就这些。目标搜索路径将更新为包含框架目录,框架将列在项目的左侧。展开它将显示标题

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

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


不过,从OCHamcrest下载的zip中似乎包含正确的OCHamcrestiOS.framework。因此,如果您将该目录存储在某个位置,并使用我上面概述的步骤链接到它,它应该可以正常工作。

我在项目中使用了许多框架。有些是别人的,有些是我的。看一下文档,我认为复制阶段的东西不适合iOS开发。所以我不会那样做。我从下载了最新的zip,它似乎包含一个现成的iOS静态库。(不在我的mac电脑上,因此我无法测试以确认)

无论如何,我包含静态lib的方法是

  • 选择项目(XCode 4)
  • 选择要将库添加到的目标
  • 选择构建阶段选项卡
  • 展开链接二进制与库
  • 单击[+]按钮添加框架
  • 单击[添加其他…]按钮,导航到包含.framework目录的目录并选择该目录
就这些。目标搜索路径将更新为包含框架目录,框架将列在项目的左侧。展开它将显示标题

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

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


不过,从OCHamcrest下载的zip中似乎包含正确的OCHamcrestiOS.framework。因此,如果您将该目录存储在某个位置,并使用我上面概述的步骤链接到该目录,它应该可以正常工作。

因此,经过反复研究,我现在采用的解决方案是在项目中包含该框架

  • 在Xcode项目中创建一个名为第三方的组
  • 将其链接到名为thirdparty的文件夹
  • 转到“在Xcode中添加文件”并选择框架
  • 将其拖到依赖项上
  • 运行测试,他们通过了 无论如何,这可能更可取,因为在/System/Library/Frameworks中引用它会出现一些版本控制问题,并且可以非常快速地进行设置。此外,我们有一个持续集成服务器,必须进入其中并