我需要使用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")
该如何解决?
答案 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的支持!