c++ - 避免/usr/include/boost

标签 c++ include-path

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

最佳答案

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

这是我想做的:

  1. /usr/include/boost 重命名为其他名称,例如 /usr/include/boost-old
  2. 创建指向 /usr/include/boost 的符号链接(symbolic link) -> /usr/boost/include/boost-old
  3. 您现在可以通过编译您的应用来测试此配置。它应该包含旧的 Boost 库。
  4. 将新的 Boost 库安装到新目录,比如 /usr/include/boost-new
  5. 更改符号链接(symbolic link)以指向新库 /usr/include/boost -> /usr/include/boost-new

关于c++ - 避免/usr/include/boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12981044/

相关文章:

c - 如何 #include 多个 .h 文件来防止警告

c++ - 从内存加载图像,GDI+

c++ - 指定包含路径以仅在 g++ 中提升到一个位置

c - 使用 GCC 的另一个目录中的静态库和 header

C++/MFC : CDockablePane in CMDIChildWndEx

c++ - 使用 Clang++ 编译会忽略 CMAKE_INCLUDE_PATH

c++ - xcode 包含路径冲突

c++ - 未使用 '...' 扩展的参数包

c++ - 如何在一个 vector 中存储具有不同数据类型的对象

c++ - 为什么我不能在声明其内容之前声明一个函数? (c++)