CMake - 找不到 Boost(缺少:序列化)(找到版本“1.73.0”
CMake - Could NOT find Boost (missing: serialization) (found version "1.73.0"
我已经在我的项目中使用 Boost 一段时间了,尽管直到现在,我只使用了 header-only 库。我现在想使用序列化,但是当我尝试将序列化添加为 REQUIRED 组件时,我收到标题中写的错误。
这是我的 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
安装后,64位Boost可以通过以下命令安装:
.\vcpkg.exe install boost:x64-windows
我仍然不知道 CMake 的原始问题是什么,我确信有一种方法可以在不使用包管理器的情况下修复它,但对于那些可以使用包管理器的人来说,这是一个解决方案包管理器。
编辑
发现这仍然没有完全解决我的问题,并导致了其他问题。我找到了一个不使用包管理器的完整解决方案并将其发布在我对这个问题的回答中:
我已经在我的项目中使用 Boost 一段时间了,尽管直到现在,我只使用了 header-only 库。我现在想使用序列化,但是当我尝试将序列化添加为 REQUIRED 组件时,我收到标题中写的错误。
这是我的 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
安装后,64位Boost可以通过以下命令安装:
.\vcpkg.exe install boost:x64-windows
我仍然不知道 CMake 的原始问题是什么,我确信有一种方法可以在不使用包管理器的情况下修复它,但对于那些可以使用包管理器的人来说,这是一个解决方案包管理器。
编辑
发现这仍然没有完全解决我的问题,并导致了其他问题。我找到了一个不使用包管理器的完整解决方案并将其发布在我对这个问题的回答中: