【问题标题】:Windows CMake GUI cannot find Boost libraryWindows CMake GUI 找不到 Boost 库
【发布时间】:2020-11-29 19:34:27
【问题描述】:

这是我第一次在 windows 中使用 cmake gui。我正在尝试在 Windows 中安装 vsomeip 库。这主要是我常用的 API someip 应用程序需要的。现在,我在编译 vsomeip 库时遇到问题。当我运行 CMake gui 时,它显示 Could NOT find Boost (missing: system thread filesystem) (found suitable version "1.67.0", minimum required is "1.55")

我已经将 boost 目录添加到我的环境路径变量中。我不确定是否需要任何其他配置。当我在 Linux 中尝试相同时,它工作正常。仅在 Windows 中存在问题。

【问题讨论】:

  • 您是如何安装 Boost 的?你建造的吗?
  • @rustyx 我在 Windows 中安装了 .exe。
  • 您能否使用 CMake GUI 将 CMake 变量 Boost_DEBUG 定义为 ON,然后在您的问题帖子中提供输出?这将显示有关 CMake 如何在您的系统上定位 Boost 的更多信息。此外,您是否能够验证“缺失”的库(例如文件系统)是否确实存在于您的系统中,并且它们是否与您尝试与 CMake 一起使用的编译器匹配?
  • @squareskittles 正如你提到的,我检查了编译器不匹配。在我的 Windows 中,我的编译器是 vc140-vc142,但在 boost.exe 中它使用的是 vc120。

标签: c++ windows boost cmake


【解决方案1】:

我通过更改 boost/version.hpp 中的 boost 版本解决了这个问题。

以前的版本写为 1_55_0。所以我只是将版本改为1_55

另一个修复是添加环境变量Path。我添加了 boost 包含目录本身:C:\local\boost_1_55_0\boost

我不确定这是修复的正确方法,但这个修复对我有用。也许如果你们有更好的解决方案可以在这里分享。

【讨论】:

  • 当然不建议手动更改version.hpp中的Boost版本。
  • 错误消息通常表示用于 CMake 项目的编译器/架构与 Boost 库的编译器/架构之间存在不匹配对于您系统上的那个 Boost 版本。 通常可以通过为正确编译器和架构(基于您的 CMake 项目使用的)重新构建 Boost 库,或选择构建和使用使用 CMake 的静态或共享 Boost 库,因为有时只构建一种类型。
  • @squareskittles 目前我没有在 Windows 中构建提升。我只是直接使用预构建的二进制文件。如果是这种情况,我该如何解决我的问题?因为现在,使用 1.58 我无法构建我的 vsomeip3 库。它说找不到系统,线程和日志。当我启用调试标志时,我可以看到 boost_compiler 猜测是 vc142,但我的预建库是 vc120。
  • 正如我之前的评论所建议的,听起来您在系统上安装了错误版本的 Boost 二进制文件。如果您的编译器需要 vc142 版本,那么您必须下载该版本,而不是 vc120 二进制文件...
  • @squareskittles 但是,奇怪的是我的编译器使用的是 vc142,但是当我使用 .\b2 命令手动编译 boost 库时,编译器使用的是 vc140。如何才能真正确定我使用的编译器是 vc142?