[英]How to properly configure boost test with cmake
Boost.Test是一個非常好的單元測試庫,但是當我嘗試在新項目中配置它時,這是一個很大的痛苦。
如何配置我的項目,使用cmake,使用具有以下要求的提升(這實際上是我在互聯網上找到的大多數收件人不喜歡的事項列表):
boost/test/included/unit_test.hpp
)。 這樣做的理由是它會降低編譯和IDE的速度。 main
函數 - 除非它是一個單行(我沒有找到任何復制粘貼方式來定義主函數)。 所以除非你能提供這樣的主要片段,否則這意味着Boost.Test是靜態鏈接的。 -static
gcc開關)。 我也不想靜態編譯每個boost組件。 所以這里是test.cpp
我想使用:
#define BOOST_TEST_MODULE ExampleTest
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(ExampleSuite)
BOOST_AUTO_TEST_CASE( my_test )
{
BOOST_CHECK(true);
}
BOOST_AUTO_TEST_SUITE_END()
這里很簡單(不工作!) CMakeLists.txt
:
cmake_minimum_required(VERSION 2.8.11)
project(example)
add_executable(simple-test tests.cpp)
實際上我沒有找到滿足我需要的任何具體解決方案,但這里有兩個部分解決方案,大部分都可以。
libboost_unit_test_framework.a
鏈接: 在這種情況下, CMakeLists.txt
看起來像這樣:
cmake_minimum_required(VERSION 2.8.11)
project(example)
ADD_LIBRARY(boost_unit_test_framework STATIC IMPORTED)
SET_TARGET_PROPERTIES(boost_unit_test_framework PROPERTIES
IMPORTED_LOCATION /usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.a)
add_executable(simple-test tests.cpp)
target_link_libraries(simple-test boost_unit_test_framework)
缺點是我明確地鏈接到/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.a
,它可以改變(我猜)。
find_packages
cmake_minimum_required(VERSION 2.8.11)
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost COMPONENTS unit_test_framework REQUIRED)
add_executable(simple-test tests.cpp)
target_link_libraries(simple-test ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
對此的Drawbaks是(據我所知set(Boost_USE_STATIC_LIBS ON)
強制所有boost組件靜態鏈接,這可能是不合需要的。
您可以在項目中構建自己的boost UTF共享版本(靜態也可以)。
add_library(my_boost_test SHARED boost_test.cpp)
使用此boost_test.cpp
:
#include <boost/test/included/unit_test.hpp>
我用這個:
cmake_minimum_required(VERSION 2.8.11)
# disable auto link
add_definitions(-DBOOST_ALL_NO_LIB)
# link against dynamic libraries
add_definitions(-DBOOST_ALL_DYN_LINK)
find_package(Boost COMPONENTS system unit_test_framework)
作為加載boost.test庫之前的序言,它按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.