首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Cmake编译boost测试

使用Cmake编译boost测试
EN

Stack Overflow用户
提问于 2012-03-27 07:18:14
回答 1查看 19.2K关注 0票数 24

我试图通过让cmake为我编译一个大型项目来简化它,但我在编译boost单元测试时遇到了麻烦。我的简单示例的cmake文件如下所示。

代码语言:javascript
运行
复制
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中的代码是:

代码语言:javascript
运行
复制
#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代码,它将可以很好地编译和运行:

代码语言:javascript
运行
复制
g++ boostTester.cpp -o output -lboost_unit_test_framework

cmake运行良好,但在使用输出make文件时,make崩溃并出现大量错误,其中第一个错误如下:

代码语言:javascript
运行
复制
undefined referance to 'boost::unit_test::unit_test_log_t::set_checkpoint(boost... bla bla

现在,我最初的想法是cmake没有正确地链接boost库,我尝试了许多命令和组合,但都没有成功。有人知道如何在cmake文件中链接boost_unit_test吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-27 08:29:46

您需要在find_package命令的需求列表中包含单元测试框架,然后链接它:

代码语言:javascript
运行
复制
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}
                      )
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9881288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档