Boost 版本混乱,如何从源构建中删除所有痕迹?

Boost 版本混乱,如何从源构建中删除所有痕迹?

我的问题是:

我从源代码安装了 boost,一切正常。CMake 找到了库。然后我意识到我需要 bjam,用 Ubuntu 的 apt-get 安装了它。这会导致版本不匹配。我尝试卸载手动安装的 boost 并安装系统包。一片混乱。Cmake 再也找不到 Boost,我不知道如何配置它来解决这个问题。

问题:

  • 我如何明确告诉 Cmake 寻找系统包 boost ?
  • 替代方案:如何删除手动安装的所有痕迹(见下文最后一段)

细节:

我按照本教程从源代码安装了 boost: http://www.boost.org/doc/libs/1_61_0/more/getting_started/unix-variants.html#test-your-program

我遵循了简单的构建说明:下载并提取最新源代码,然后运行 ​​bootstrap 而不使用其他参数(安装目录 = 默认 = usr/local)并使用sudo b2 install

示例程序(使用正则表达式)运行没有问题。然后我连接了 CMake 并测试了 FindBoost 是否有效。这个问题显示了如何做到这一点: https://stackoverflow.com/questions/3897839/how-to-link-c-program-with-boost-using-cmake

效果很好,我不需要配置库和包含路径,只需使用接受答案中的代码即可。

不幸的是我需要 Boost.Python,它有一个额外的依赖项:bjam。在寻找安装说明时bjam,我意识到我可以只安装 Ubuntu 包libboost1.58-tools-dev,它包含bjam。我安装了这个包并从下载的 boost 源运行了快速启动测试示例。测试抱怨版本不匹配。没错,我从源代码安装了 1.61(最新版本)。但我的系统包是 1.58(这是版本bjam)。

现在我尝试删除 boost。显然,您必须手动从 /usr/local 中删除与 boost 相关的所有内容。https://ubuntuforums.org/showthread.php?t=892951 然后我安装了系统包libboost1.58-dev作为 的对应libboost1.58-tools-dev包。这产生了一个新问题:Cmake 无法再找到 boost。它抱怨预期版本是 1.5,但给定的版本是 0.0.0

这个问题(如何使用 CMake 将 C++ 程序与 Boost 链接)描述了如何为 boost 库配置备用路径(不是可接受的答案)。我尝试做同样的事情。

我用过这个apt-get 在哪里安装 libqt4?找到 apt-get 把我的系统 boost 包放在哪里。但它只告诉我一些文件在 usr/include 中。我找不到 lib 文件。

SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /usr/include/boost")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "/.../boost/lib")  <---- this path needs to be set

同样有趣的是:

我使用 apt-get 将 Eigen3 作为系统包进行安装,并且 cmake 无需任何额外配置就可以找到它。

因此我认为源代码中第一次安装的痕迹仍然存在。我相信,如果我从一开始就安装 Ubuntu boost 包,就不会遇到这个问题。这可能吗?

相关内容