Раньше у меня была статическая библиотека, которую импортировали моя основная программа и мои тесты. Однако мне нужно было создать глобальные переменные внутри моей статической библиотеки, и нет никакого способа заставить 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 данной фабрики, которая позволит проверять зависимости кода для внедрения зависимостей.
Создание такого вида ссылочного шва легко с make-файлами, но make-файлы нежелательны, потому что я вынужден вручную поддерживать зависимости заголовка в make-файле.