簡體   English   中英

用Cmake編譯一個boost測試

[英]Compiling a boost test with 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文件時,make崩潰時會出現大量錯誤,其中第一個是:

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

現在我最初的想法是cmake沒有正確鏈接boost庫,我嘗試了許多命令和組合,沒有運氣。 有誰知道如何在cmake文件中鏈接boost_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}
                      )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM