前回のエントリの続きです
make check で
- 必要なプログラム・ライブラリのビルド
- テストケースの実行
を自動で行う方法をまとめます.
autotoolsの使い方,make checkに関する基本的な情報は前回のエントリにまとめているので,本エントリは差分だけをまとめます
Makefile.am の記述
test_X.c から test_X をビルドして,test_X をテストケースとして利用する場合は,Makefile.am に以下の3行を加えます
check_PROGRAMS = test_X test_X_SOURCES = test_X.c TESTS = $(check_PROGRAMS)
テストケースが複数ある場合は,次のように記載できます
check_PROGRAMS = test_X check_PROGRAMS += test_Y # test_X に関する設定 test_X_SOURCES = test_X.c # test_Y に関する設定 test_Y_SOURCES = test_Y.c TESTS = $(check_PROGRAMS)
必要な記述はこれだけです.あとは通常の Makefile.am と同様に調整するだけでテスト管理ができるようになっています.
補足情報(Makefile.amの書き方について)
蛇足になりますが,Makefile.am でよく使う記述をメモしておきます.
例えば特定のプログラムだけ,コンパイルオプション(CFLAGS)を変更したい場合は
test_X_CFLAGS += "-O3"
などとします
同様に,特定のプログラムだけリンカのオプションを変える場合は
test_X_LDFLAGS += "-L/usr/local/lib" test_X_LDADD += "-lm"
などとします
すべてのテストプログラムについて,CFLAGSを設定したい場合は
CFLAGS += -I../path/to
などと書く方法もあります.
補足事項(テストケースの並列起動など)
autotools はもはや「枯れた技術」です.新鮮味はありませんが,すでにツールとして完成されています.
たとえば上記の Makefile.am の記述だけで
- make check を実行しないかぎり, check_PROGRAMS で指定したプログラムはビルドされない
- make install を実行しても check_PROGRAMS などはインストールされない
- make check -j10 などとすると,テストケースを並列実行できる.
などなど細かいところの挙動が調整されていて,使い勝手がよくなっています.
次回のエントリでは valgrind を使ってメモリリークのチェックを自動で行う make check の書き方を紹介します