c++ - 如何使用cmake正确配置boost测试

标签 c++ boost cmake boost-test

Boost.Test 是一个非常好的单元测试库,但是当我尝试在新项目中配置它时,它总是很痛苦。

如何配置我使用 cmake 的项目以使用符合以下要求的 boost(这确实是我在互联网上找到的大多数食谱中不喜欢的东西的列表):

  • 我不想使用 UTF 的单一 header 变体(即我不想包含 boost/test/included/unit_test.hpp)。这样做的理由是它会减慢编译和 IDE 的速度。
  • 我真的不想写一个 main 函数——除非它是一个单行代码(我没有找到任何复制粘贴的方法来定义一个 main 函数)。因此,除非您可以提供这样的主要代码段,否则这意味着 Boost.Test 是静态链接的。
  • 我不想静态地包含所有内容(通过 -static gcc 开关)。我也不想静态编译每个 boost 组件。
  • 我不想在我的 cmake 配置中硬编码任何库路径。

所以这里是 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/

相关文章:

c++ - Ubuntu 12.04 上的教程 OpenGL 4

c++ - Windows C++ 纳秒计时?

c++ - 文本冒险解析器 C++

c++ - PCL 云可视化 Visual Studio 2010

c++ - 如何正确安装boost

c++ - Boost 将默认边权重设置为 1

exception - 实现一个好的 C++0x error_condition?

xcode - CMake INTERPROCEDURAL_OPTIMIZATION 仅用于调试目标

c++ - 带有 Boost 的 CMake 找不到静态库

linux - 无法在linux Mint上安装QT4