有没有一种简单的方法来使用Visual Studio 2010的构建系统设置链接接缝?

时间:2011-01-13 21:46:19

标签: c++ visual-studio-2010 msbuild

我曾经有一个静态库,它由我的主程序和我的测试导入。但是,我需要构建静态库中的全局变量,并且无法强制Visual Studio执行此操作。

我想做的是创建一个编译所有常见C ++文件的项目,一个编译和链接单元测试的项目(使用常见的C ++文件),以及一个链接实际应用程序的项目。

如何在Visual Studio 2010中执行此操作?

编辑:因为已经提出澄清,这就是我的意思:

InterfaceIUse.hpp

#include <memory>

struct IInterface
{
    virtual ~IInterface() {}
    virtual void SomethingIDependOn() = 0;
};

std::auto_ptr<IInterface> FactoryMethod();

CodeUnderTest.cpp

#include "InterfaceIUse.hpp"

void FunctionUnderTest()
{
    //Blah blah blah
}

IExistOnlyInTheMainProgram.cpp

#include "InterfaceIUse.hpp"

std::auto_ptr<IInterface> FactoryMethod()
{
    //I return the real implementation of the interface.
}

IExistOnlyInTheTest.cpp

#include "InterfaceIUse.hpp"

std::auto_ptr<IInterface> FactoryMethod()
{
    //I return the mock implementation of the interface.
}

这个想法是编译给定工厂的正确的.cpp实现,这将允许测试代码的依赖关系被依赖注入。

使用makefile可以很容易地使用这种链接接缝 - 但是makefile是不受欢迎的,因为我不得不在makefile中手动维护头依赖项。

1 个答案:

答案 0 :(得分:1)

我在VS2008中做过类似的设置,我认为在VS2010中仍然适用于你。

首先,我将项目层次结构设置为构建 ProductionCodeBase TestCodeBase 。 通用接口/标头被提取到所有项目都可访问的文件夹中。

然后在我的#34; Build&#34;项目,我手动将 ProductionCodeBase 中的目标文件添加到&#34; 发布&#34;配置和目标文件从 TestCodeBase 到&#34; 调试&#34;组态。

不要忘记设置项目依赖项,以便在&#34; 构建&#34;

中链接时,目标文件有效。

请注意,您可以创建仅将源代码编译到目标文件中而不尝试链接它们的项目。只需转到&#34;工具构建顺序&#34;对于该特定项目并禁用相应的链接器。