2010-06-29 46 views
4

我有以下目录结构。组织测试项目和主要可执行文件 - C&C++

root 
--src 
---tests 

src包含用于应用程序的源&头文件(C文件)。当这个应用程序建立时,它会生成一个可执行文件tests目录包含应用程序的单元测试用例(C++文件,使用UnitTest++作为测试框架)。

在测试项目中,我可以包含src目录下的头文件,编译通过。链接时出现问题。链接器将无法在源目录中找到目标文件。

我该如何解决这个问题? C & C++项目中的一般做法是为主应用程序提供一个可执行文件,另一个用于需要相同源文件的测试。

  • 应用程序类型:跨平台。
  • 发展现状ENV:Linux的
  • 构建工具:CMake的

任何帮助将是巨大的!

回答

5

我一直为此做了三件事。我有一个构建静态库的构建,其中包含我的大部分代码。然后,我会有一个测试项目与静态库和一个包含UI代码的项目链接,这些代码通常不会进行单元测试。

因为两个项目共享相同的编译静态库,所以项目之间不需要重新编译文件。

  • 注意:当我说上述“项目”时,我的意思是无论您的构建系统有什么“项目”的范围。对于将成为proj文件的Visual Studio,对于CMake它应该是构建目标。
+0

这与我倾向于最终使用的方法完全相同。 – 2010-06-29 00:55:17

+0

我明白你的意思。从技术上讲,创建链接到它的静态库和可执行文件并将目标文件直接链接到可执行文件有什么不同? – 2010-06-29 00:55:21

+0

它应该没有区别Appu。 – 2010-06-29 00:57:22

2

我认为你需要在你的测试项目中编译这些文件,或者在你可以包含的主项目中创建一个lib。

+0

是的。我正在考虑在测试项目中编译它们。但是这会导致编译两次的文件。这对我来说并不好看。 – 2010-06-29 00:47:46

+0

将你想测试的核心代码编译为一个库,然后从你的测试项目和你的主调用代码中调用它。 – 2010-06-29 00:54:04