Подтвердить что ты не робот

Компиляция теста повышения эффективности с Cmake

Я пытаюсь упростить большой проект, имея cmake компилировать все это для меня, но у меня возникли проблемы с компиляцией тестов модуля boost. Файл cmake для моего простого примера показан ниже.

cmake_minimum_required(VERSION 2.8)
find_package(Boost COMPONENTS system filesystem REQUIRED)
add_excecutable(testTheTester boostTester.cpp)
target_link_libraries(testTheTester ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY})
add_test(tester tester)

и код в boostTester.cpp:

#define BOOST_TEST_MAIN
#if !defined( WIN32 )
    #define BOOST_TEST_DYN_LINK
#endif
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_CASE( la ) {
    BOOST_CHECK_EQUAL(1, 1)
}

Теперь этот код cpp будет компилироваться и работать нормально, если я его создам вручную:

g++ boostTester.cpp -o output -lboost_unit_test_framework

и cmake отлично работает, но при использовании выходного файла make сбой происходит с огромным количеством ошибок, первым из которых является следующее:

undefined referance to 'boost::unit_test::unit_test_log_t::set_checkpoint(boost... bla bla

теперь моя первоначальная мысль заключается в том, что cmake не связывает библиотеку boost правильно, и я пробовал много команд и комбинаций без везения. Кто-нибудь знает, как связать boost_unit_test в файле cmake?

4b9b3361

Ответ 1

Вам нужно включить структуру unit test в список требований в команде find_package, а затем связать ее:

find_package(Boost COMPONENTS system filesystem unit_test_framework REQUIRED)
...
target_link_libraries(testTheTester
                      ${Boost_FILESYSTEM_LIBRARY}
                      ${Boost_SYSTEM_LIBRARY}
                      ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}
                      )