HIDARI日記(右)

そのときどき興味ある技術を中心にだらだら書いてます。内容は個人の見解であり、所属する企業を代表するものではありません。

Visual Studio Express 2012 for Windows Desktop で初めてのGoogle Test を動かした記録

google testのダウンロード

googletest - Google C++ Testing Framework - Google Project Hosting

からgoogletest本体を落としてくる.現時点でのバージョンは1.6.0になってる.gtest-1.6.0.zipってのをダウンロードできたら適当な場所に解凍.

gtest-1.6.0っていうディレクトリができるはず.

とりあえずそのディレクトリの読み取り専用属性を外しておきましょう.

f:id:hidari-yori:20130216010323p:plain

Visual Studioでビルドしましょう

gtest-1.6.0\msvc\gtest.sln

Visual Studio 2012 Express で開きます.このソリューションファイルがVisual Studio 2003だか2005だかで作ってあるのでアップグレードがどうのこうのって出てくるからアップグレードしましょう.颯爽とF7を押すだけです.

エラーいっぱい出るはず.なのでこちらを参考にヘッダファイルを修正します.

ブログズミ: Visual Studio 11 Beta で Google Test を使う

修正するのは

gtest-1.6.0\include\gtest\internal\gtest-port.h

というファイル.

修正後,ソリューションを開き直してビルド(F7)します.今度はビルド通るはず.では動作確認.

一番簡単な初めてのC++のテスト

Win32コンソールアプリケーションのソリューションを作って試してみます.

なんとなくWin32コンソールアプリケーションウィザードのアプリケーションの設定で,プリコンパイル済みヘッダーのチェックを外しておきます(よくわかってない).あとはデフォルト.

f:id:hidari-yori:20130216013818p:plain

インクルードディレクトリやリンカの設定を行います.

  • プロジェクトの[プロパティ]

    • →[C++]タブ→[全般]で「追加のインクルードディレクトリ」に gtest-1.6.0\include を指定。

    • →[リンカ]タブ→[全般]で「追加のライブラリディレクトリ」に gtest-1.6.0\msvc\gtest\Debug を指定。

    • →[リンカ]タブ→[入力]で「追加の依存ファイル」に gtest_maind.lib、gtestd.lib を指定。

    • →[C++]タブ→[コード生成」で「ランタイムライブラリ」に "マルチスレッドデバッグ(/MTd)" を指定。

いいか, /MDd じゃないぞ! /MTd だからな!!間違えるな!!間違えるとこんなビルドエラーが発生するからな!!

error LNK2038: 'RuntimeLibrary' の不一致が検出されました。値 'MTd_StaticDebug' が MDd_DynamicDebug の値 'GtestExample.obj' と一致しません。
error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) は既に gtestd.lib(gtest-all.obj) で定義されています。

などなど……

で,設定終わったらこんな感じのコードをひとまず書いて,デバッグなしで実行(Ctrl+F5).

f:id:hidari-yori:20130216012540p:plain

(゚д゚)ウマー