Boost

2011年07月27日

※英語でも書いてあります。 [Boost.Test] Where is boost::test_tools::tt_detail::check_impl ? — Gist


C++向けに単体テストを書くとき、以前はCppUnitというツールを使っていたのだが、色々調べているうちに「CppUnitは記述が面倒」ということを知り、別のツールを試してみることに。

そこで、C++向けの総合ライブラリ「Boost」に入っている単体テストツール「Boost.Test」を使ってみたのだが、

を元にコードを書き

以下のコマンドでコンパイルをしても

g++ -I/PATH/TO/BOOST -L/PATH/TO/BOOST/bin.v2/libs/test/build/gcc-4.3.3/release/link-static/threading-multi -lboost_unit_test_framework soulgem_test.cpp -o soulgem_test

以下のようなエラーが出てしまう。

undefined reference to `boost::test_tools::tt_detail::check_impl( ...

ちなみに、Boostのバージョンは1.46.1、GCCのバージョンは4.3.3である。

で、ぐぐっても英語含めそれらしい結果が出なくて困っていたのだが、-lboost_unit_test_frameworkに相当するバイナリ(/PATH/TO/BOOST -L/PATH/TO/BOOST/bin.v2/libs/test/build/gcc-4.3.3/release/link-static/threading-multi/libboost_unit_test_framework.a)のあるフォルダを漁っていると、そこに「test_tools.o」なるファイルを発見。これをコンパイル時にリンク対象として追加し

g++ -I/PATH/TO/BOOST -L/PATH/TO/BOOST/bin.v2/libs/test/build/gcc-4.3.3/release/link-static/threading-multi -lboost_unit_test_framework /PATH/TO/BOOST/bin.v2/libs/test/build/gcc-4.3.3/release/link-static/threading-multi/test_tools.o soulgem_test.cpp -o soulgem_test

とすると、見事コンパイルが通った。



maraigue at 23:44コメント(0)トラックバック(0) 
livedoor プロフィール

H. Hiro

  • ライブドアブログ