找不到Boost(丢失:unit_test_framework)(找到的版本为“ 1.71.0”)

时间:2019-12-05 06:38:31

标签: c++ boost cmake

我需要使用boost unit_test_framework,并且正在使用Cmake命令来找到它:

cmake_minimum_required(VERSION 3.15)
project(My_String)

set(CMAKE_CXX_STANDARD 17)
set(Boost_USE_STATIC_LIBS OFF)
set(SOURCE_FILES MyStringTest.cpp)
set(BOOST_ROOT "C:\\Program Files\\boost\\boost_1_71_0")

find_package(Boost REQUIRED COMPONENTS unit_test_framework)

include_directories(${Boost_INCLUDE_DIR})
include_directories(../src)

add_executable (Boost_Tests_run ${SOURCE_FILES})

target_link_libraries (Boost_Tests_run Boost::unit_test_framework)

我收到此错误:

Could NOT find Boost (missing: unit_test_framework) (found version
  "1.71.0")

该如何解决?

1 个答案:

答案 0 :(得分:0)

正如Real Fresh建议使用vcpkg mananger https://github.com/microsoft/vcpkg 因此,我尝试了一下,但遇到了一些问题,但是在此之后它起作用了,所以我所做的就是:

1.install vcpkg https://github.com/microsoft/vcpkg(按照说明进行操作) 设置时可能会出现错误(致命错误,提取后操作无法将“文件”重命名为“不同名称”)。您需要手动重命名。

2。在vcpkg主页上安装boost-test lib(您将看到有关如何安装软件包的说明)

3。您需要为cmake设置以下变量:

-DVCPKG_TARGET_TRIPLET=x86-windows (x86-windows in my case)
"-DCMAKE_TOOLCHAIN_FILE='root to vcpkg'/scripts/buildsystems/vcpkg.cmake" (in my case root to vcpkg = F:/Files/vcpkg
so the variable will be:
"-DCMAKE_TOOLCHAIN_FILE=F:/Files/vcpkg/scripts/buildsystems/vcpkg.cmake"

4。在test / cmakelists.txt文件中,您需要添加以下内容:

find_package (Boost REQUIRED COMPONENTS unit_test_framework)
target_link_libraries (your_test_exe Boost::unit_test_framework)

对于我来说,我的test / cmakelists.txt是这样的:

cmake_minimum_required(VERSION 3.15)
project(My_String)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "--coverage" )
set(SOURCE_FILES MyStringTest.cpp)
set(Boost_DEBUG ON)

find_package (Boost REQUIRED COMPONENTS unit_test_framework)

include_directories(../Src)

add_executable (Boost_Tests_run ${SOURCE_FILES})

target_link_libraries (Boost_Tests_run Boost::unit_test_framework)

5。在test.cpp中,您需要包括:

#include <boost/test/included/unit_test.hpp> as it is!
in addition to the classes you are testing.

在我看来,是这样的:

#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#define BOOST_TEST_MODULE MyString_Test_Suite
#include
#include "MyString.h"
#include "MyString.cpp"
#include <boost/test/included/unit_test.hpp>

经过一个多星期的谷歌搜索,反复试验,这终于对我有用! 希望有人遇到同样的问题会有所帮助。 感谢Real Fresh的支持!