1

在带有相当旧版本的 boost in 的旧版本 rhel 上运行/usr/include/boost。安装了更现代的 boost 版本并添加了适当的-I选项,g++以便它几乎总是进入 boost 标头的新目录。问题是很多代码库是多年前为旧版本的 boost 编写的,并且包含在更现代的 boost 中不存在的标头。在这种情况下,cpp愉快地包含来自/usr/include/boost. 避免这种情况的最佳方法是什么?我宁愿不改变#include <boost/file.hpp>明确地指向一个不同的地方,除非我必须这样做,并且如果我只知道它们是什么,我非常乐意清理依赖于已灭绝标头的代码。这可能是一个持续存在的问题,因为一些从事该项目的程序员可能习惯性地包含已灭绝的标头,因此仅检查一次是不够的。

4

1 回答 1

2

与其尝试更改代码查找包含的位置,或者更改生成文件以包含其他目录,不如更改其内容/usr/include/boost以使其指向新内容?

这是我要尝试做的事情:

  1. 重命名/usr/include/boost为别的东西,也许/usr/include/boost-old
  2. 创建一个指向/usr/include/boost->的符号链接/usr/boost/include/boost-old
  3. 您现在可以通过编译您的应用程序来测试此配置。它应该包括旧的 Boost 库。
  4. 将新的 Boost 库安装到新目录,比如/usr/include/boost-new
  5. 将 suymbolic 链接更改为指向新库/usr/include/boost->/usr/include/boost-new
于 2012-10-19T19:47:39.007 回答