2010-04-22 23 views
3

可以说我有: 称为“LIB” 称为“LIBAPP” 称为“APP” 称为应用项目的应用项目中的应用程序项目的静态库项目“APPTEST”的Visual Studio:链接可执行

当我将“LIB”添加到LIBAPP项目依赖项时,Visual Studio会自动将“LIBAPP”链接到LIB。 但是,当我将APP添加到APPTEST项目依赖项时,它没有。

,因为我在做APP在APPTEST类的单元测试,我必须对APP链接,因此我目前手动连接对APP的所有* .OBJ文件(数百...)

,因为我有每次我从APP添加或删除* .cpp文件来更改APPTEST的链接目标,这不是一个很好的解决方案。

那么有没有办法强制Visual Studio为我自动执行此操作,就像添加静态库Project Dependency时一样?

+0

什么版本的VS? – 2010-04-22 16:51:46

+0

VS2005&VS2008 – smerlin 2010-04-22 17:28:56

回答

1

正如你发现的,你不能“链接到APP”。

一种解决方案是将所有APP的代码放入其自己的库中,将APP作为单个源文件在该库中运行一个函数。您可以使APPTEST成为与新APP库链接的另一个单一源文件。

0

使应用程序依赖于另一个应用程序有助于在您点击编译时导致两个应用程序都被构建(如果需要)。如果你在APP中有足够的代码,你觉得你需要为它们编写单元测试,我认为最好把这些代码分解到另一个库中,并称之为“LIBAPPUTIL”或者其他一些代码,这取决于LIB和APP将不得不依赖于LIB和LIBAPPUTIL。

你有崇高的意图。通过将LIBAPP的部分到一个单独的图书馆,你会得到一堆的好处:

  • 可以构建具有LIBAPP的变化不同无效的主要()■
  • 你可以多建几个LIBAPPUTILs,每个测试不同组相关代码的使用情况。
  • 您可以有不依赖于LIB的LIBAPPUTIL的替代实现。如果你对如何使用接口类型(C++虚拟或C结构充满了函数poointers)很熟悉,你可以完全抽象出APP对LIB的依赖。