ま、そんなところで。

ニッチな技術系メモとか、車輪を再発明してみたりとか.

Google C++ Testをソースコードのままビルドツリーへ組み込む

Google C++ Test ライブラリ作るのめんどくさーい

C++のUnitTestっていえば、GoogleC++Testの人気がほぼ不動になりつつありますね。

使うときはソースコードを入手してライブラリをビルドしてプロジェクトへ組み込むことが多いようですが、実はソースコードのままビルドツリーに組み込んで使えるように設計されているようです.

一つ前のバージョン1.7.0ではソースコードを組み込む用途向けにヘッダとソースコードをそれぞれ1ファイルに結合したfusedセットが提供されていたのですが、最新の1.8.0では削除されてしまったらしくソースコード内に見当たりません. (※script以下にfuse_gtest_files.pyがあるので、これで生成するようになってるのでしょう)

しかし、git cloneやdownloadしたオリジナルのソースコードのままで組み込める設計は維持されているようで、以下の手順を踏めばfusedソースを生成しなくても簡単に組み込み可能です.

ランタイム不整合とかマクロ違いの不整合とかを回避できるので、意外におすすめ。

どうやって・・?

手順です.

1.以下の2つインクルードパスを設定する.

2. プロジェクト内でgtest-all.ccをインクルード

プロジェクト内のcppファイルのいずれかで、gtest-all.ccファイルをインクルード.
一番分かり易いのは、インクルード専用のcppファイルをプロジェクトに一つ追加する形ですかね.

ex) gtest_inc.cppを新規に追加

// 内容は以下のinclude一行
// これでGoogleTestのコード全体を取り込む.  
#include <src/gtest-all.cc>

ソースコードを配置してインクルードパスさえちゃんと設定すればお手軽にUnitTestをビルドできます.
プラットフォームごとにライブラリをビルドしなくても済むので、配布を前提とするプロジェクトではとても便利です.


関連サイト

GitHub - google/googletest: Googletest - Google Testing and Mocking Framework