我已经在我的项目中使用 Boost 一段时间了,但到目前为止,我只使用了仅包含头文件的库。我现在想使用序列化,但是当我尝试将序列化添加为必需组件时,我收到标题中写入的错误。
这是我的 CMAKE 文件:
cmake_minimum_required(VERSION 3.15)
project(GinRummyCPP)
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "D:/Program Files/boost/boost_1_73_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "D:/Program Files/boost/boost_1_73_0/libs")
set(CMAKE_CXX_STANDARD 17)
find_package(Boost COMPONENTS serialization)
add_executable(GinRummyCPP main.cpp)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(GinRummyCPP ${Boost_LIBRARIES})
endif()
我检查了我的 Boost 文件夹,序列化位于“D:\Program Files\boost\boost_1_73_0\libs\serialization”
我尝试过设置BOOST_ROOT
和其他相关变量,但似乎没有任何作用。
这是加载 CMake 文件时产生的完整错误
CMake Warning at C:/Program Files/JetBrains/CLion 2019.3.2/bin/cmake/win/share/cmake-3.15/Modules/FindBoost.cmake:1144 (message):
New Boost version may have incorrect or missing dependencies and imported
targets
Call Stack (most recent call first):
C:/Program Files/JetBrains/CLion 2019.3.2/bin/cmake/win/share/cmake-3.15/Modules/FindBoost.cmake:1266 (_Boost_COMPONENT_DEPENDENCIES)
C:/Program Files/JetBrains/CLion 2019.3.2/bin/cmake/win/share/cmake-3.15/Modules/FindBoost.cmake:1904 (_Boost_MISSING_DEPENDENCIES)
CMakeLists.txt:7 (find_package)
-- Could NOT find Boost (missing: serialization) (found version "1.73.0")
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Documents/GinRummyCPP/cmake-build-release-mingw-64
不确定它是否相关,但我使用 CLion 作为我的 IDE,使用 mingw-w64 作为我的编译器。
我最终使用一个名为 vcpkg 的 C++ 包管理器来安装 Boost:x64-windows,之后正确地找到了 Boost 和相应的组件。有关如何安装它的说明可以在这里找到:https://github.com/Microsoft/vcpkg https://github.com/Microsoft/vcpkg
安装后,可以使用以下命令安装64位Boost:
.\vcpkg.exe install boost:x64-windows
我仍然不知道 CMake 的原始问题是什么,并且我确信有一种方法可以在不使用包管理器的情况下修复它,但对于那些可以使用包管理器的人来说,这是一个解决方案。
EDIT
发现这仍然没有完全解决我的问题,并导致了其他问题。我找到了一个不使用包管理器的完整解决方案,并将其发布在我对此问题的回答中:简单 boost 序列化中未定义的引用错误 https://stackoverflow.com/questions/62010279/undefined-reference-errors-in-simple-boost-serialization
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)