プロジェクトテンプレートジェネレータを作成しました 備考録とエトセトラ
久々にページ更新します。
私は、C言語用のテストコードを書くのに、CppUTestを使っているのですが、 他にも使いやすいテスト環境ないかなぁ、と思いまして。
前々からGoogle Testがどんなものか気になってはいたのですが、 どうにも手が出ないでいたので、今回とりあえず触ってみることにしました。
で、せっかくなので、CppUTestみたいに、コマンドポンポンでプロジェクトやクラスのテンプレート作れると楽だよね、と思いましたので、 Google Test 向けに似たようなものを書いてみることにしました。
成果物
CppUTest用は、公式リポジトリのscriptsフォルダにMakefileを使うプロジェクトジェネレータがあるんですが、 CMake用は見つからなかったので、とりあえず自分用にCMake用を作りました。
できること
- プロジェクトディレクトリの生成
- CMakeLists.txt等のビルドスクリプトのテンプレート生成
- C++クラスのテンプレートの生成
- C言語のクラスもどきテンプレートの生成
コマンド
あらかじめ、パスを通しておく必要があります。
また、スクリプトはBシェル準拠で記述していますが、環境によっては動かないかもしれません。 あらかじめご了承いただきたくお願いします。
NewProject
プロジェクトテンプレートを生成します。
NewProject プロジェクト名
でプロジェクトを生成できます。
生成したプロジェクトをビルドする場合は、buildディレクトリに移動した後で、
cmake .. && make
と打ち込んでください。
make実行時に、テストとカバレッジチェックも行われます。 実行ファイル生成は、(デバッグビルドの場合は)テストをパスした場合にのみ生成されるようにしました。 オプションでこの工程をスキップすることもできます。
NewPackage
パッケージディレクトを生成します。
プロジェクトディレクトリの中で、
NewPackage パッケージ名
で、パッケージディレクトリが生成されます。
後のNewClassや、NewCClassを使う場合に、パッケージディレクトリは必要になります。
NewClass
C++クラスのテンプレートを生成します。
プロジェクトディレクトリの中で、
NewClass クラス名 パッケージ名
で、クラスのヘッダ・実装・テストファイルが生成されます。
NewCClass
C言語によるクラスもどきのテンプレートを生成します。
プロジェクトディレクトリの中で、
NewCClass クラス名 パッケージ名
で、クラスもどきのヘッダ・実装・テストファイルが生成されます。
使用の主な流れ
以下のような感じで使います。
-
NewProjectで、プロジェクトを生成
-
プロジェクトディレクトリ直下で、
git init
を実行 -
プロジェクトディレクトリ内のextディレクトリに移動し、
git submodule
を使用して、Google TestないしCppUTestをダウンロードしてくる -
NewClassでクラスを生成し、テストと実装を書く
-
buildディレクトリに移動し、
cmake .. && make
でビルド・テストを実行する
余談
Google Test を触った感じ、メモリリーク検出等はCppUTestのほうが簡単そうなので、 私はまだまだCppUTestを使っていくことになりそうです。
ただ、テストの実行は、pthreadで並列化できている分、Google Testのほうが速そう? もう少し触ってみないと、違いはわからなそうです。
CppUTestの脱Makefile化ができたことは、今回の作業の一番の収穫かもしれません。
blog comments powered by Disqus