私は私のメインプログラムと私のテストの両方でインポートされた静的ライブラリを持っていました。しかし、静的ライブラリの内部にグローバル変数を構築する必要がありました.Visual Studioに強制する方法はありません。Visual Studio 2010のビルドシステムでリンクシームを設定する簡単な方法はありますか?
私がしたいのは、すべての一般的なC++ファイル、ユニットテスト(一般的なC++ファイル)をコンパイルしてリンクするプロジェクト、および実際のアプリケーションをリンクするプロジェクトをコンパイルするプロジェクトです。
Visual Studio 2010でこれを行うにはどうすればよいですか?
EDIT:明確化が求められているので、ここで私が何を意味するかです:
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プロジェクトを作成し、ビルド、リンクなどのコマンドを提供してみましたか?あなたはそれで狂ったことをすることができます。 –
質問が表示されているかわかりません。複数のプロジェクトで同じソースコードファイルを参照することは、それらを同期させておくという面倒を超える問題ではありません。.objファイルが互いにぶつかり合っている場合は、 "Object File Name"設定を変更する必要があります。私は初期化の問題に焦点を当てるだろう、あなたは持ってはいけない。少し静的なC++クラスのインスタンス変数は不思議を行うことができます。 –