一、Boost宏
1.BOOST_XXX_DYN_LINK
????????如果要链接到Boost库,那么可以选择链接到一个静态或动态的Boost库,默认是静态链接。可以通过为某个特定的库Boost库定义 BOOST_XXX_DYN_LINK宏强制它改变为动态链接。或者,可以通过定义BOOST_ALL_DYN_LINK宏来强制所有的 Boost库为动态链接。
2.BOOST_XXX_NO_LIB
????????可以通过定义BOOST_XXX_NO_LIB宏来强制关闭某个库的动态链接特性,或者定义BOOST_ALL_NO_LIB宏来关闭Auto_Link功能。这个时候需要自己指示编译器链接哪些库文件。
二、Boost Test与CMake结合使用
????????我们在CMake I 创建一个简单的单元测试的基础上修改代码。
1.test.cpp
#include "sum_integers.h"
#include <vector>
#define BOOST_TEST_MODULE example_text_suite
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(add_example)
{
auto integers= {1,2,3,4,5};
auto result=sum_integers(integers);
BOOST_REQUIRE(result==15);
}
2.CMakeLists.txt
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(boostTest LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)
SET(CMAKE_CXX_STANDARD_REQUIERD ON)
#库
add_library(sum_integers sum_integers.cpp)
#MyDemo
add_executable(MyDemo MyDemo.cpp)
target_link_libraries(MyDemo sum_integers)
#boost库
#-静态库
set(BOOST_INCLUDEDIR "D:/thirdParties/boost_1_74_0")
set(BOOST_LIBRARYDIR "D:/thirdParties/boost_1_74_0/stage/lib")
#-动态库
#set(BOOST_INCLUDEDIR "D:/thirdParties/boost_1_74_0_shared/boost_1_74_0")#注意字母大写
#set(BOOST_LIBRARYDIR "D:/thirdParties/boost_1_74_0_shared/boost_1_74_0/stage/lib")
find_package(BOOST 1.74.0 REQUIRED COMPONENTS unit_test_framework)
if(BOOST_FOUND)
message(STATUS "Boost found")
endif()
include_directories(${BOOST_INCLUDEDIR})
link_directories(${BOOST_LIBRARYDIR})
add_executable(BoostTest test.cpp)
message(STATUS "BOOST_LIBRARIES=${Boost_LIBRARIES}")
target_link_libraries(BoostTest
PUBLIC
sum_integers
${BOOST_LIBRARIES})
#动态链接boost,而不是默认的静态链接。
#target_compile_definitions(BoostTest PUBLIC BOOST_TEST_DYN_LINK)
enable_testing()
add_test(
NAME boost_test
COMMAND $<TARGET_FILE:BoostTest>
)
三、配置、构建与测试
1.配置
?2.构建
?3.测试
?
|