我试图让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文件时make崩溃,并出现大量错误,其中第一个错误是:
undefined referance to 'boost::unit_test::unit_test_log_t::set_checkpoint(boost... bla bla
现在我最初的想法是cmake没有正确地链接boost库,我已经尝试了许多命令和组合,没有运气。有人知道如何在cmake文件中链接boost_unit_test吗?
2条答案
按热度按时间rbl8hiat1#
您需要在
find_package
命令的需求列表中包含单元测试框架,然后链接它:cqoc49vn2#
现在在CMake 3中,我建议使用导出的命名空间目标而不是变量。如果你有一个错别字,弗雷泽的答案就无法链接。此外,如果可以,请显式指定链接类型。