Boost.Test是一个非常不错的单元测试库,但是当我尝试在新项目中对其进行配置时,总会遇到很大的麻烦。
如何配置我的使用cmake的项目,以便在满足以下要求的情况下使用boost(这实际上是我在Internet上发现的大多数食谱中不喜欢的事情的列表):
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})
这样做的缺点是(据我所知
set(Boost_USE_STATIC_LIBS ON)
强制所有boost组件进行静态链接,这可能是不希望的。关于c++ - 如何使用cmake正确配置 boost 测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29074841/