【发布时间】:2012-04-10 11:56:17
【问题描述】:
我试图通过让 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?
【问题讨论】: