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/
project root/src - ソースファイル
project root/tst - テストソースファイル*
project root/contrib - 流用ソース
project root/contrib/gtest - gtestのfused src*
project root/Debug - Debug Build
project root/Release - Release Build
project root/UnitTest - UnitTest Build

  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は以下の画面のような表示
    Project Files

  2. ビルドの設定
    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ができる。
    ビルドすると画面は以下のようになります。
    UnitTest Build

  3. テストの実行
    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。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.