无法找到请求的 Boost 库 Windows Cmake

Unable to find the requested Boost libraries Windows Cmake

本文关键字:Boost Windows Cmake 请求      更新时间:2023-10-16

我正在尝试在Windows上构建字节币源代码,但我遇到了CMake和Boost库的问题。首先,我尝试抓取 Boost 1.55 并自己编译。由于某种原因,接近末尾的一两个库没有编译,但我认为 CMake 至少会识别编译的库。相反,我在尝试加载 CMake 项目时收到此错误:

错误:找不到请求的加速库。提升版: 1.55.0 加速包含路径:C:/程序文件/提升/boost_1_55_0 找不到以下提升库:
boost_system boost_filesystem boost_thread boost_date_time boost_chrono boost_regex boost_serialization boost_program_options 无增强库 被发现了。 您可能需要将BOOST_LIBRARYDIR设置为目录 包含 Boost 库或BOOST_ROOT到提升的位置。

然后我尝试在 find_package() 中添加一个 HINT。它试图解析一个奇怪的路径,不确定它在哪里这样做:

C:/程序文件中的 CMake 错误 (x86)/CMake/share/cmake-3.4/Modules/FindBoost.cmake:273 (if):语法 CMAKE 代码中的错误

C:/Program Files (x86)/CMake/share/cmake-3.4/Modules/FindBoost.cmake:273

解析字符串时

${Boost_C:/PROGRAM FILES/BOOST/BOOST_1_55_0_LIBRARY_RELEASE}

阅读有关此事的一些 SO 答案,我添加了环境变量:

C:\Users\Misha>set

BOOST_INCLUDEDIR=C:\local\boost_1_55_0 BOOST_LIBRARYDIR=C:\local\boost_1_55_0\lib32-msvc-12.0 BOOST_ROOT=C:\local\boost_1_55_0\boost

在这一点上,我尝试使用预编译的库,什么都没有。

CMkeLists.txt

find_package(Boost 1.55 REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options)
#find_package(Boost 1.55 REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options HINT "C:/Program Files/boost/boost_1_55_0")
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
if (MINGW)
    set(Boost_LIBRARIES "${Boost_LIBRARIES};ws2_32;mswsock")
elseif (APPLE)
    set(Boost_LIBRARIES "${Boost_LIBRARIES}")
elseif (NOT MSVC)
    set(Boost_LIBRARIES "${Boost_LIBRARIES};rt")
endif ()

我不熟悉CMake,所以这可能是一个简单的修复。我只是看不出来。

我遇到了同样的错误,但解决了它。我的 BOOST 库是在 Windows 7(64 位)上使用 Gcc 6.3 构建的。

我在CMakeLists.txt设置了Boost_DEBUG on并找到了

-- [ C:/Program Files/CMake/share/cmake-3.9/Modules/FindBoost.cmake:1620 ] 正在搜索 对于SYSTEM_LIBRARY_RELEASE: libboost_system-mgw63-mt-1_67;libboost_system-mgw63-mt;libboost_system-mt-1_67;libboost_system-mt;libboost_system

这意味着FindPackage(Boost)正在搜索libboost_system-mgw63-mt-1_67但我的图书馆名称是libboost_system-mgw63-mt-x64-1_67

所以我从所有图书馆名称中删除了X64,现在它工作正常。