Eclipse CDT Kepler + MinGW/64 + Google Test 1.7.0 の環境を作る
簡単に覚書。
準備
- MinGWを使えるようにしておく。C:\MinGWに入れておくと楽ちん?
- CDTをダウンロード。好きな場所に解凍。
- メニューのHelp->Install New Software…
- Install Dialogで Work with: でKeplerを選択。
- Filterに Test と入れて Programming Languages のの 「C/C++ Unit Testing Support」を入れる
- Google Testの最新版をDownloadして好きなところに解凍する
プロジェクト作成
プロジェクトの基本フォルダ構成は以下
*を付けたフォルダはUnitTest時のみBuildされる。
project root/<br /> project root/src - ソースファイル<br /> project root/tst - テストソースファイル*<br /> project root/contrib - 流用ソース<br /> project root/contrib/gtest - gtestのfused src*<br /> project root/Debug - Debug Build<br /> project root/Release - Release Build<br /> project root/UnitTest - UnitTest Build<br />
-
基本的なプロジェクトの作成とベースフォルダの作成
- C++のProjectを作る。Empty ProjectでToolchainsを MinGW GCCにする。
MinGWをC:\MinGW以外に入れた場合はProjectのPropertyのC/C++ BuildのEnvironmentでConfigurationをAll ConfigurationにしてMINGW_HOMEを変更する。 2. Projectの下にsrcフォルダーを作る 3. Projectの下にtstフォルダーを作る 4. Projectの下にcontribフォルダーを作る 5. Projectの下のcontribフォルダーの下にgtestを作る 6. contrib/gtestのフォルダーにGoogle Testを解凍したフォルダのfused-src/gtest/にあるファイルを全部コピーする。Project Explorerに表示されなければRefresh
ここまで終わるとProject Explorerは以下の画面のような表示
<img src="/post/2013/11/cmg1.png" alt="Project Files" width="392" height="320" class="aligncenter size-full wp-image-1750" srcset="/post/2013/11/cmg1.png 392w, /post/2013/11/cmg1-300x244.png 300w" sizes="(max-width: 392px) 100vw, 392px" /> </li>
* ビルドの設定
1. メニューのProject→Build Configuration > Manage…で New で UnitTest というDebugをCopyしてBuildを作る
2. gtestフォルダを右クリックしてPropertyを見てC/C++ Buildの下のSettingsを選択。
右側のConfigurationでReleaseを選択してExclude resource from buildをチェック。
Debugも同様にしてExclude resource from buildをチェック。これでUnitTest以外ではgtestがCompileされないようになる。
3. 同じ様にtstフォルダを右クリックしてReleaseとDebugの時にBuildされないようにExcludeする。
4. このままだとgtest_main.ccとgtest-all.ccのコンパイルが “gtest/gtest.h” をincludeできずにエラーになる。
gtestフォルダのPropertyからPreprocessorの設定でInclude Pathを追加すれば良い。
二つのccファイルの#includeを編集してしまっても良いが、Google Testを更新したい場合に変更を忘れてひっかかる可能性もあるので、gtestフォルダのPropertyからC/C++ Settingsの GCC C++ Compiler→Includesを選択して Include pathsに “${workspace_loc:/${ProjName}/contrib}” を追加する。
5. ProjectのPropertyか、tstフォルダのPropertyを開いて Include pathsに “${workspace\_loc:/${ProjName}/contrib}” と “${workspace\_loc:/${ProjName}/src}” を追加する。個人的にはProjectのPropertyで良いと思ってますが意図しないFileがIncludeされないように注意する必要がある。ここまででUnitTestはBuild可能です。
6. (Optional) srcの下にmain.cppを作成してmain関数を定義する。これでDebugとReleaseはBuildできるが、UnitTestがmain関数が複数あるので蹴られるようになる。main.cppのPropertyから UnitTest の場合のみExcludeされるように設定する。
ここまで終わるとUnitTest構成はBuildできるようになる。ビルドするとUnitTest以下にProject名.exeができる。
ビルドすると画面は以下のようになります。
[<img src="/post/2013/11/cmg2.png" alt="UnitTest Build" width="392" height="385" class="aligncenter size-full wp-image-1754" srcset="/post/2013/11/cmg2.png 392w, /post/2013/11/cmg2-300x294.png 300w" sizes="(max-width: 392px) 100vw, 392px" />][3] </li>
* テストの実行
1. メニューからRun→Run Configurations…を選択
2. C/C++ Unitを右クリックしてNewを選択。C/C++ Unitが表示されて無い場合はPlug-inがInstallされているか確認する事。
3. 名前を適当にUnit Testとかに変更。
4. C/C++ Application: に Search Project…ボタンを押して UnitTest下の.exeを設定する。
5. Build before launchingでEnable auto buildにしたりとかは好みで。
6. C/C++ Testingタブに切り替えて ‘Google Test Runner’ を選択する
7. Applyして実行してみて、C/C++ Unit欄に緑バーが表示されればOK。</ol>