5

我还不是集成开发环境的粉丝,但我正在努力克服我的偏见并学习 Xcode。(接下来是 Eclipse/CDT;当我去年尝试时,我也无法让它为我工作,但这是一个单独的问题。)

我正在一个新项目中编写一些新代码,该项目将成为一个小型库(的一部分)。我也想对它进行单元测试。我如何向 Xcode 解释我正在构建一个(共享)库,但我也想在测试程序中使用它,该程序是从不在共享库中的单独源编译的?

源代码:

  • 原子.c
  • 原子.h
  • 测试原子.c

产生的文件:

  • libatom.dylib
  • 测试原子

我已经得到atom.catom.h编译到库中。我只是不确定如何组织事物,以便我也可以构建test-atom以与库链接。我假设当我完成排序后,为 test-atom.c 的测试支持代码添加库会相对简单——即使它还不受 Xcode 控制。

FWIW,我主要使用 C 而不是 Objective C。

4

2 回答 2

4

您的项目中需要两个目标;Xcode 中的一个目标生成一个产品,它是一个库、可执行文件或其他一些输出。

因此,您将有一个要生成的目标libatom.dylib,我怀疑您已经设置了它,还有另一个命令行可执行目标来生成test-atom可执行文件,供您运行以测试您的库。

添加test-atom目标后,您应该获取信息并从目标test-atom.c中删除其成员资格libatom.dylib,并将其添加为新test-atom目标的成员。文件的目标成员资格决定了构建目标是否会尝试编译/复制/链接该文件。(目标对文件的作用取决于它成为成员时添加到的构建阶段。)

您还应该libatom.dylib在您的 Products 组中获取有关条目的信息,并将test-atom作为目标的成员。这将导致test-atom可执行文件链接到libatom.dylib.

最后,获取有关test-atom目标(而非产品)的信息,并在“常规”选项卡中,添加对目标的依赖项。libatom.dylib这将确保构建test-atom目标始终首先构建libatom.dylib目标。

于 2009-08-24T00:00:53.093 回答
2

编辑:请参阅使用 Xcode 3 和 Objective-C 进行自动化单元测试(我最初链接到的文章的更新版本,如下面的评论中所指出的)。另请参阅对 Objective-C 代码进行单元测试的最佳方法是什么?虽然您显然还没有使用 Obj-C,但是为 C 代码设置新目标的基础是相同的,并且 OCUnit 特定的东西非常代表单元测试在 IDE 中的工作方式。

于 2009-08-23T23:55:31.780 回答