Eclipse CDT Kepler + MinGW/64 + Google Test 1.7.0 の環境を作る

簡単に覚書。

準備

  1. MinGWを使えるようにしておく。C:\MinGWに入れておくと楽ちん?
  2. CDTをダウンロード。好きな場所に解凍。
  3. メニューのHelp->Install New Software…
  4. Install Dialogで Work with: でKeplerを選択。
  5. Filterに Test と入れて Programming Languages のの 「C/C++ Unit Testing Support」を入れる
  6. 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 />

  1. 基本的なプロジェクトの作成とベースフォルダの作成

    1. 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&#8230;で 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のコンパイルが &#8220;gtest/gtest.h&#8221; をincludeできずにエラーになる。
	      
        gtestフォルダのPropertyからPreprocessorの設定でInclude Pathを追加すれば良い。
	      
        二つのccファイルの#includeを編集してしまっても良いが、Google Testを更新したい場合に変更を忘れてひっかかる可能性もあるので、gtestフォルダのPropertyからC/C++ Settingsの GCC C++ Compiler→Includesを選択して Include pathsに &#8220;${workspace_loc:/${ProjName}/contrib}&#8221; を追加する。
      5. ProjectのPropertyか、tstフォルダのPropertyを開いて Include pathsに &#8220;${workspace\_loc:/${ProjName}/contrib}&#8221; と &#8220;${workspace\_loc:/${ProjName}/src}&#8221; を追加する。個人的には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&#8230;を選択
          2. C/C++ Unitを右クリックしてNewを選択。C/C++ Unitが表示されて無い場合はPlug-inがInstallされているか確認する事。
          3. 名前を適当にUnit Testとかに変更。
          4. C/C++ Application: に Search Project&#8230;ボタンを押して UnitTest下の.exeを設定する。
          5. Build before launchingでEnable auto buildにしたりとかは好みで。
          6. C/C++ Testingタブに切り替えて &#8216;Google Test Runner&#8217; を選択する
          7. Applyして実行してみて、C/C++ Unit欄に緑バーが表示されればOK。</ol>