XENEXE

CppUnit を Ubuntu 18.04 LTS にインストールする


heroImage

1. はじめに

CppUnit は,ユニットテストフレームワークとして有名な JUnit の C++ バージョンです。公式サイトに記載されているビルド手順に従って Ubuntu 18.04 LTS にインストールしようとしてもエラーが発生します。本記事では,CppUnit をマニュアルでコンパイルして,Ubuntu 18.04 LTS にインストールする手順について記述します。

2. コンパイル

まずは,公式サイトに記載されているビルド手順に従ってコンパイルします。

Terminal window
1
$ git clone git://anongit.freedesktop.org/git/libreoffice/cppunit/
2
$ ls
3
cppunit
4
$ cd cppunit
5
$ ./autogen.sh
6
error: aclocal not found

まず初めに,error: aclocal not found というエラーが出力されます。これは,aclocal (Automake) パッケージが存在していないという意味なので,aclocal (GNU Automake) パッケージをインストールし,再度 autogen.sh スクリプトを実行します。

Terminal window
1
$ sudo apt install automake -y
2
$ ./autogen.sh
3
./autogen.sh: need libtoolize tool to build cppunit

次に,./autogen.sh: need libtoolize tool to build cppunit というエラーが出力されます。これは,libtoolize (GNU Libtool) パッケージが存在していないという意味なので,libtoolize (GNU Libtool) パッケージをインストールし,再度 autogen.sh スクリプトを実行します。

Terminal window
1
$ sudo apt install libtool -y
2
$ ./autogen.sh
3
libtoolize: putting auxiliary files in '.'.
4
libtoolize: copying file './ltmain.sh'
5
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
6
()
7
configure.ac:20: installing './missing'
8
examples/cppunittest/Makefile.am: installing './depcomp'
9
parallel-tests: installing './test-driver'

autogen.sh スクリプトが正常に実行されていれば,上記のような文字列が出力されます。次に,configure スクリプトを実行します。

Terminal window
1
$ ./configure
2
checking for a BSD-compatible install... /usr/bin/install -c
3
checking whether build environment is sane... yes
4
checking for a thread-safe mkdir -p... /bin/mkdir -p
5
()
6
checking whether g++ supports C++11 features with -std=c++11... no
7
checking whether g++ supports C++11 features with -std=c++0x... no
8
configure: error: *** A compiler with support for C++11 language features is required.

configure: error: *** A compiler with support for C++11 language features is required. というエラーが出力されます。これは,C++ コンパイラが存在していないという意味なので,C++ コンパイラをインストールし,再度 configure スクリプトを実行します。

Terminal window
1
$ sudo apt install g++ -y
2
$ ./configure
3
checking for a BSD-compatible install... /usr/bin/install -c
4
checking whether build environment is sane... yes
5
checking for a thread-safe mkdir -p... /bin/mkdir -p
6
()
7
==============================================================================
8
Build configuration:
9
debug: no
10
docs: no
11
werror: yes
12
==============================================================================

configure スクリプトが正常に実行されていれば,上記のような文字列が出力されます。最後に,make コマンドを用いて CppUnit のソースコードをコンパイルします。

Terminal window
1
$ make
2
make all-recursive
3
make[1]: ディレクトリ '/home/[USER_NAME]/cppunit' に入ります
4
Making all in src
5
()
6
make[2]: 'all-am' に対して行うべき事はありません.
7
make[2]: ディレクトリ '/home/[USER_NAME]/cppunit' から出ます
8
make[1]: ディレクトリ '/home/[USER_NAME]/cppunit' から出ます

make コマンドが正常に実行されていれば,上記のような文字列が出力されます。これで CppUnit のコンパイルは完了です。続いて,CppUnit のインストールに移ります。

3. インストール

管理者権限の make コマンドに引数 install を付与して実行します。

Terminal window
1
$ sudo make install
2
Making install in src
3
make[1]: ディレクトリ '/home/[USER_NAME]/cppunit/src' に入ります
4
Making install in cppunit
5
()
6
/usr/bin/install -c -m 644 cppunit.pc '/usr/local/lib/pkgconfig'
7
make[2]: ディレクトリ '/home/[USER_NAME]/cppunit' から出ます
8
make[1]: ディレクトリ '/home/[USER_NAME]/cppunit' から出ます

インストールが正常に完了していれば上記のような文字列が出力されます。これで CppUnit のインストールは完了です。続いて,CppUnit の動作確認に移ります。

4. 動作確認

公開されている CppUnit のサンプルコードを,お借りして動作確認を行います。サンプルコードを sample.cpp として任意の場所に保存し,コンパイル,実行します。

Terminal window
1
$ ls
2
sample.cpp
3
$ g++ -std=c++14 -g sample.cpp -L /usr/local/lib -lstdc++ -lcppunit -ldl
4
$ ./a.out
5
./a.out: error while loading shared libraries: libcppunit-1.15.so.1: cannot open shared object file: No such file or directory

libcppunit.so が参照されていない状態なので,ネット記事を参考にしてパスを通し,再度 a.out を実行します。

Terminal window
1
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
2
./a.out
3
FunctionTest::test_add : OK
4
FunctionTest::test_diff : assertion
5
FunctionTest::test_mul : OK
6
sample.cpp:69:Assertion
7
Test name: FunctionTest::test_diff
8
equality assertion failed
9
- Expected: 1
10
- Actual : 100
11
12
Failures !!!
13
Run: 3 Failure total: 1 Failures: 1 Errors: 0

正常に実行されていれば引用元の実行結果と同様の実行結果が出力されます。これで CppUnit の動作確認が完了です。

5. おわりに

ここまで,CppUnit をマニュアルでコンパイルし,Ubuntu 18.04 LTS にインストールする手順について記述してきました。ここ数年で,CppUnit 以外の C++ 用ユニットテストフレームワークが多く登場してきたので CppUnit を使用する機会も減っています。それに伴い,CppUnit に関する新しい記事も減っています。本記事が CppUnit ユーザーの一助になれば幸いです。

環境情報