在 /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
的内容,使其指向新东西?
这是我想做的:
- 将
/usr/include/boost
重命名为其他名称,例如/usr/include/boost-old
- 创建指向
/usr/include/boost
的符号链接(symbolic link) ->/usr/boost/include/boost-old
- 您现在可以通过编译您的应用来测试此配置。它应该包含旧的 Boost 库。
- 将新的 Boost 库安装到新目录,比如
/usr/include/boost-new
- 更改符号链接(symbolic link)以指向新库
/usr/include/boost
->/usr/include/boost-new
关于c++ - 避免/usr/include/boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12981044/