cmake FindBoost 在 Windows 上使用 MinGW 构建时找不到 Boost 库

ken*_*nba 1 c++ boost cmake

qtcreator支持qmakecmake跨平台开发,并且 qmake适用于两者msvcMinGW基于Windows. 但是,我更愿意只支持一种工具:cmake.

CMakeLists.txt通过-httplib的工作精细linux,用的时候cmake建立msvcWindows。但是,当使用cmaketo build MinGWon 时Windows,出现以下错误:

C:/Program Files/CMake/share/cmake-3.13/Modules/FindBoost.cmake:2100 处的 CMake 错误(消息):
无法找到请求的 Boost 库。

升压版本:1.69.0

Boost 包含路径:D:/DevLibraries/boost/boost_1_69_0

找不到以下 Boost 库:

      boost_system
Run Code Online (Sandbox Code Playgroud)

没有找到 Boost 库。您可能需要将 BOOST_LIBRARYDIR 设置为包含 Boost 库的目录或将 BOOST_ROOT 设置为 Boost 的位置。

无论是BOOST_LIBRARYDIRBOOST_ROOT环境变量设置和使用时发现Visual Studio 15 2017 Win64发电机和默认本地编译器

该错误消息表明,在使用MinGW Makefiles和默认本机编译器时,cmake找到了BOOST_ROOT环境变量,但未找到BOOST_LIBRARYDIR. 因此,它似乎与此处描述的问题不同:Cmake 找不到 Boost

这是一个错误FindBoost.cmake吗?有“解决办法”吗?

ken*_*nba 5

这是第 1518 行_boost_ARCHITECTURE_TAGFindBoost.cmake描述的in问题。
添加了该标签以处理 Boost 1.66.0 及更高版本。

它没有将_boost_ARCHITECTURE_TAGfor设置为MinGWto -x64,因此它正在搜索增强库名称,例如:

libboost_system-mgw73-mt-d-1_69.a
Run Code Online (Sandbox Code Playgroud)

代替:

libboost_system-mgw73-mt-d-x64-1_69.a
Run Code Online (Sandbox Code Playgroud)

有一个解决方法:将cmake变量:设置Boost_ARCHITECTURE-x64

注意:设置Boost_ARCHITECTURE为环境变量不起作用,因为FindBoost.cmake不能Boost_ARCHITECTURE作为环境变量读取。