2017-11-08 2 views
1

私はGtestを使ってユニットテストをしようとしています。コンパイル順eclipse C++

私は、テスト対象のオリジナルプロジェクト(リンクすること)からのファイルを持つ別のプロジェクトを作成しています。新しいプロジェクトでは、次にテストする関数またはユニットの追加の依存関係の擬似実装とモックを作成します。元のプロジェクトからのファイルで、私は私が直面しています問題は、私はテストプロジェクトがあるときに、偽の実装が含まれるように、特定の順序でファイルをコンパイルする必要があり、元の依存関係や偽の実装

を含めることの#ifdefを使用していますビルド。 私はMinGW、GNU BuilderでWindows 10でMCUXpressoを使用しています

ファイルのコンパイル順序を制御するための回避策や方法を予期しています。

#ifdef IsTesting  //This is part or original project, original header files 
#include "Fake_dependency" 
#else 
#include "Original_Dependency" 
#endif 

は次に、新しいプロジェクトに私は、新しいプロジェクトやテストプロジェクトをコンパイルするとき、私は私がファイルよりも第1またはそれ以前にコンパイルされるように定義され、この変数を持つこのファイルを必要とする

#define IsTesting true // Part of Test_Project, followed by other code for testing 

を定義します

+0

cppファイルのコンパイル順は関係ありません。多分あなたはリンクの順序を意味するでしょうか? –

+0

C++ではコンパイル順は関係ありません。あなたのC++ファイルに正しいヘッダファイルを含める必要があるかもしれません... –

+0

なぜあなたの状況に関係するのか分かりませんが、特定の順序でコンパイルする必要がある場合は、自分の 'Makefile' 。 – Galik

答えて

2

テストコードにIsTestingを定義する代わりに、テストプロジェクトのビルド構成に定義を追加することができます。

プロパティに移動 - > C/C++一般 - >パスとシンボル - >適切な言語(GNU C++)を選択し、Eclipseがコンパイル取得したい場合(任意の値なし) "IsTesting" を

を追加コンパイルされたコードはグレーではありません。 プロパティ - > C/C++一般 - >インデクサー - >アクティブなビルド構成を使用する

+0

解決策をお寄せいただきありがとうございます。コンパイラはプロジェクト設定で定義された変数についてどのように知っていますか? – GSrd10

+0

Eclipseはプロジェクト設定を使用して自動化されたビルドを処理します。私にとっては、Eclipseが生成されたビルドコマンドを変更することを意味します。しかし、私はあなたが使用するビルドシステムの種類に依存すると思います。結局のところ、私たちが話しているのは*ビルド構成です –

関連する問題