gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:24:05 25 4
gpt4 key购买 nike

我曾经有一个静态库,它由我的主程序和我的测试导入。但是,我需要在我的静态库中构造全局变量,并且没有办法强制 Visual Studio 这样做。

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

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

编辑:因为有人要求澄清,这就是我的意思:

接口(interface)IUse.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 实现,这将允许要测试的代码的依赖项被依赖注入(inject)。

使用 makefile 很容易实现这种链接接缝——但是 makefile 是不可取的,因为我不得不在 makefile 中手动维护 header 依赖项。

最佳答案

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

首先,我将我的项目层次结构设置为BuildProductionCodeBaseTestCodeBase。公共(public)接口(interface)/ header 被提取到所有项目都可以访问的文件夹中。

然后在我的“构建”项目中,我手动将来自 ProductionCodeBase 的目标文件添加到“Release”配置中,并从 添加目标文件>TestCodeBase 进入“Debug”配置。

不要忘记设置项目依赖关系,以便目标文件在“Build”中链接时有效。

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

关于c++ - 有没有一种简单的方法可以使用 Visual Studio 2010 的构建系统设置链接接缝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4685653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com