I am trying to build an application with CMake using Boost and the boost unit-testing framework in Ubuntu 9.04. I have installed boost from synaptic. Here is what I have in my CMakeList.txt file:
IF(Boost_unit_test_framework_LIBRARY) GET_FILENAME_COMPONENT(LIB_EXTENSION ${Boost_unit_test_framework_LIBRARY} EXT) IF(LIB_EXTENSION STREQUAL ".so") ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK) ENDIF(LIB_EXTENSION STREQUAL ".so") ENDIF(Boost_unit_test_framework_LIBRARY) SUBDIRS(mytests) FIND_PATH(BOOST_LIB REQUIRED) # Eg. /usr/include/boost INCLUDE_DIRECTORIES(${BOOST_LIB}) ------------------------------------------------------------------------------------------------------------------------ And there is the content of my unit test .cpp file: #define BOOST_AUTO_TEST_MAIN #include <boost/test/auto_unit_test.hpp> // Boost Test declaration and Checking macros #include <boost/test/unit_test_suite.hpp> #include <boost/test/test_tools.hpp> #include <boost/test/floating_point_comparison.hpp> BOOST_AUTO_TEST_SUITE(first_test); BOOST_AUTO_TEST_SUITE(); BOOST_AUTO_TEST_CASE(first_test) { } BOOST_CHECK_EQUAL(2,2); } BOOST_AUTO_TEST_SUITE_END(); BOOST_AUTO_TEST_CASE(my_always_fail_test_case) { BOOST_CHECK(false); } BOOST_AUTO_TEST_SUITE_END(); ------------------------------------------------------------------------------------------------------------------------ But when I run make I get a long series of errors: /usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start': /build/buildd/glibc-2.9/csu/../sysdeps/x86_64/elf/start.S:109: undefined reference to `main' CMakeFiles/unit_test_first_test.dir/src/unit_test_first_test.cpp.o: In function `first_test::my_always_fail_test_case::test_method()': unit_test_first_test.cpp:(.text+0x99): undefined reference to `boost::unit_test::unit_test_log_t::set_checkpoint(boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::basic_cstring<char const>)' unit_test_first_test.cpp:(.text+0x13c): undefined reference to `boost::test_tools::tt_detail::check_impl(boost::test_tools::predicate_result const&, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long, ...)' CMakeFiles/unit_test_first_test.dir/src/unit_test_first_test.cpp.o: In function `global constructors keyed to _Z20init_unit_test_suiteiPPc': unit_test_first_test.cpp:(.text+0x27b): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>)' unit_test_first_test.cpp:(.text+0x29f): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>)' unit_test_first_test.cpp:(.text+0x304): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)' unit_test_first_test.cpp:(.text+0x31c): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(int)' unit_test_first_test.cpp:(.text+0x37f): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)' unit_test_first_test.cpp:(.text+0x398): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(int)' CMakeFiles/unit_test_first_test.dir/src/unit_test_first_test.cpp.o: In function `boost::unit_test::singleton<boost::unit_test::unit_test_log_t>::instance()': unit_test_first_test.cpp:(.text._ZN5boost9unit_test9singletonINS0_15unit_test_log_tEE8instanceEv[boost::unit_test::singleton<boost::unit_test::unit_test_log_t>::instance()]+0x2c): undefined reference to `vtable for boost::unit_test::unit_test_log_t' CMakeFiles/unit_test_first_test.dir/src/unit_test_first_test.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)': unit_test_first_test.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)]+0x1f): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)' unit_test_first_test.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)]+0x55): undefined reference to `boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&)' collect2: ld returned 1 exit status make[2]: *** [revised/first_test/unit_test_first_test] Error 1 make[1]: *** [revised/first_test/CMakeFiles/unit_test_first_test.dir/all] Error 2 make: *** [all] Error 2 Any ideas on how to make boost unit test work with cmake? _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake