Подключение boost.test с помощью CMake
Пытаюсь подключить unit_test.hpp, но сборка падает на этапе линковки со следующим сообщением:
LINK Pass 1: command "C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\Test.dir\objects1.rsp /out:Test.exe /implib:Test.lib /pdb:D:\Development\cpp\Test\cmake-build-debug\Test.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console -LIBPATH:C:\Libraries\boost\stage\lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\Test.dir/intermediate.manifest CMakeFiles\Test.dir/manifest.res" failed (exit code 1120) with the following output: main.cpp.obj : error LNK2019: unresolved external symbol "public: static class boost::unit_test::unit_test_log_t & __cdecl boost::unit_test::unit_test_log_t::instance(void)" (?instance@unit_test_log_t@unit_test@boost@@SAAEAV123@XZ) referenced in function "void __cdecl boost::unit_test::
anonymous namespace'::dynamic initializer for 'unit_test_log''(void)" (??__Eunit_test_log@?A0x6d3762e7@unit_test@boost@@YAXXZ) Test.exe : fatal error LNK1120: 1 unresolved externals
И использую систему CMake:
cmake_minimum_required(VERSION 3.20)
get_filename_component(project_dir_name ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${project_dir_name})
set(CMAKE_CXX_STANDARD 17)
file(GLOB hpps ${PROJECT_SOURCE_DIR}/sources/*.hpp)
file(GLOB cpps ${PROJECT_SOURCE_DIR}/sources/*.cpp)
set(Boost_USE_STATIC_LIBS ON)
message("Try to find boost")
find_package(Boost)
if(NOT BOOST_FOUND)
message("Set boost root")
set(Boost_ROOT C:/Libraries/boost)
message("Try to find boost")
find_package(Boost REQUIRED)
endif()
if(Boost_FOUND)
message(${Boost_INCLUDE_DIR})
include_directories(${Boost_INCLUDE_DIR})
message(${Boost_LIBRARY_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
endif()
add_executable(${PROJECT_NAME} ${hpps} ${cpps})
if(Boost_FOUND)
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
endif()
Я предполагаю, линковщик не знает какие библиотеки boost нужно слинковать, так как в качестве параметра передается путь до папки с библиотеками, но не сами необходимые библоетки
LIBPATH:C:\Libraries\boost\stage\lib