【问题标题】:cmake FindBoost not finding Boost libraries when building with MinGW on Windows在 Windows 上使用 MinGW 构建时,cmake FindBoost 找不到 Boost 库
【发布时间】:2019-05-25 09:57:01
【问题描述】:

qtcreator 支持qmakecmake 进行跨平台开发和 qmake 适用于 msvcMinGWWindows 的基础上构建。不过,我更愿意只支持一种工具:cmake

CMakeLists.txtvia-httplib 上的CMakeLists.txtlinux 上运行良好,当使用cmakeWindows 上构建msvc 时。 但是,当使用cmakeWindows 上构建MinGW 时,出现以下错误:

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

Boost 版本:1.69.0

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

找不到以下 Boost 库:

      boost_system

未找到任何 Boost 库。您可能需要设置 BOOST_LIBRARYDIR 到包含 Boost 库的目录或 BOOST_ROOT 到 Boost 的位置。

BOOST_LIBRARYDIRBOOST_ROOT 环境变量均已设置并在使用 Visual Studio 15 2017 Win64 生成器和默认的本机编译器时找到

错误消息表明,当使用MinGW Makefiles 和默认的本机编译器时,cmake 会找到BOOST_ROOT 环境变量而不是BOOST_LIBRARYDIR。所以似乎不是这里描述的同一个问题:Cmake doesn't find Boost

这是FindBoost.cmake 中的错误吗?有没有“变通办法”?

【问题讨论】:

  • 据我记得,Boost安装,适用于Virtual Studio,不能用于MinGW构建。在任何情况下,您都可以启用Boost_DEBUG 选项(如果您从命令行运行cmake,则通过-DBoost_DEBUG=ON)并检查实际出了什么问题。

标签: c++ boost cmake


【解决方案1】:

这是FindBoost.cmake 中的_boost_ARCHITECTURE_TAG 的问题,在第 1518 行进行了描述。
添加该标签以处理 Boost 1.66.0 及更高版本。

它没有将MinGW_boost_ARCHITECTURE_TAG 设置为-x64,因此它正在搜索boost 库名称,例如:

libboost_system-mgw73-mt-d-1_69.a

代替:

libboost_system-mgw73-mt-d-x64-1_69.a

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

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

【讨论】:

  • Related cmake issue 用于查找名称包含架构标签的 boost 库的问题。
  • 非常感谢,你真的解封了我!
猜你喜欢
  • 1970-01-01
  • 2012-12-29
  • 2021-11-15
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 2013-12-01
相关资源
最近更新 更多