我有一个Xcode静态库项目,如何添加测试目标,以便我可以在那里运行它? (而不是在链接到它的项目中。)

时间:2010-06-10 19:30:11

标签: cocoa xcode build static-libraries targets

我希望能够在库目标中测试库代码,因此我不必切换到单独的项目来运行它。

我看到了如何添加目标,但我不知道如何将其设置为像“命令行工具”项目模板那样运行。我尝试添加一个新的“Shell Tool”目标,但我不知道如何让它像一个一样运行。我必须添加到该目标的构建设置是什么?启动它需要哪些文件(main.m?)?

编辑(从下面添加了我的评论,希望能让问题更加负责。)

我的图书馆有两个目标,一个用于iOS,另一个用于MacOS。到目前为止,我只将它包含在iOS项目中,所以这就是我现在想要的工作。我尝试添加一个Cocoa Touch Unit Test Bundle目标,但我的构建失败,我得到命令/ bin / sh /失败,退出代码1和架构'i386'的失败测试(GC OFF)。我不认为我想在i386上运行(至少不是为了测试我的iOS目标)而且我找不到任何在目标设置中说i386的东西。

我看到我项目的活动架构是i386(在Project> Set Active Architecture菜单中),但它不允许我在那里更改它。我的TestApp目标有标准(armv6)作为架构集,我尝试搜索设置,其中没有任何i386。我该如何改变?

4 个答案:

答案 0 :(得分:2)

Mac OS X SDK中有一个单元测试包目标的模板。

请注意,“bundle”是测试目标的构建产品:目标生成单元测试包。它不要求您的实际产品(库,应用程序等)是一个捆绑;事实上,你的实际产品是什么并不重要。

也就是说,当你有一个静态库时,你可以做一些不同的事情:

  1. 右键单击组树中的任何内容。从“添加”子菜单中,选择“新目标”。
  2. 在Mac OS X标题下,选择Cocoa。在模板列表中向下滚动,然后选择Unit Test Bundle。单击“确定”。
  3. 命名您的单元测试包目标。
  4. 将您的库构建产品(从Products组)添加到您的单元测试包目标的Link Binary with Libraries阶段。
  5. 在任何构建阶段之外,将库目标(从“目标”组)添加到单元测试包目标。这使它成为依赖项,因此测试包目标将在必要时重建库。
  6. 将您的活动目标设置为测试包目标。
  7. 通常,您只需将测试中的代码的源代码文件添加到库目标和测试包目标,但是这样做也会测试您将测试包链接到库的能力。如果库有任何阻止链接的问题,可能会检测到它们。

答案 1 :(得分:0)

您可以更改Active Executable吗? (它位于Xcode的Project菜单下:Set Active Executable)

您的Shell Tool目标是否在其中一个构建文件中包含int main(int argc, char* argv[])函数?

答案 2 :(得分:0)

对于Mac,您可以添加新目标。选择命令行工具模板。

答案 3 :(得分:0)

在XCode 9.1中:

  • 点击File -> New -> Target...
  • 选择MacOS Unit Testing Bundle