gccとCMakeでgoogletestをビルドする方法(Mac OS X編)
Webを調べていると、
googletestをビルドする際にVC++かXCodeを使う例が多かったので、IDEを使わないでできる方法を調べてみました。なお、googletest自体の説明は割愛します。
環境
私の環境は以下の通りです。
- Max OS X 10.6.8(Snow Leopard)
- gcc 4.5.4
- cmake 2.8.5
公式の
READMEには cmake 2.6.4 以上が必要とありますが、gccのバージョンは明記されていませんでした。
手順
- svnリポジトリからgoogletestを取得する
- cmakeでgoogletestをビルドする
- main関数を持つソースファイルを作成する
- テストコードを作成する
- g++でテストコードでビルドする
- テストを実行する
(1) svnリポジトリからgoogletestを取得する
適当な場所に配置します。
svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn
(2) cmakeでgoogle testをビルドする
cmakeを実行するディレクトリも適当な場所で良いです。 {GTEST_DIR}はgoogletestのあるパスに置き換えてください。 libgtest.a と libgtest_main.a ができれば成功です。
mkdir mybuild
cd mybuild
cmake ${GTEST_DIR}
make
(3) main関数を持つソースファイルを作成する
以下のソースファイルを参考に、main関数のあるソースファイルを作成します。
ファイル名はtestmain.ccとしました。ちなみに必ず以下の順に呼ばないといけないようです。
- testing::InitGoogleTest(&argc, argv);
- RUN_ALL_TESTS();
#include <iostream>
#include "gtest/gtest.h"
GTEST_API_ int main(int argc, char **argv) {
std::cout << "Running main() from testmain.cc\n";
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
(4) テストコードを作成する
テストコードを作成します。ファイル名はmytest.ccとしました。
#include "gtest/gtest.h"
TEST(firstTest, abs)
{
EXPECT_EQ(1, abs( -1 ));
EXPECT_EQ(1, abs( 1 ));
}
(5) g++でテストコードをコンパイルする
コンパイルする時はgoogle testのヘッダファイルがあるディレクトリをインクルードパスに入れる必要があります。また、cmakeでビルドした時にできたライブラリも含めてビルドします。
なお、以下のコマンド中の testmain.cc はmain関数が入っているファイル、mytest.cc がテストコードが入っているファイルです。また、{GTEST_DIR}はgoogletestが入っているディレクトリのパスに置き換えてください。
g++ -I{GTEST_DIR}/include testmain.cc mytest.cc libgtest.a libgtest_main.a -o mytest
(6) テストを実行する
できあがったバイナリを実行すると、テスト結果が表示されます。テスト結果がOKなら成功です。
0 件のコメント:
コメントを投稿