【发布时间】:2021-01-26 02:02:26
【问题描述】:
我的应用程序需要 boost 库。 /usr/lib 中有一个 boost 库,/usr/include/boost 中有一个 boost 包含,但它们正是我所需要的。所以我在家里编译了新的 boost lib,/home/js/anaconda/.../include/boost 和 /home/js/anaconda/.../lib。
要在家中使用 boost,我使用“-I/home/js/anaconda/.../include/boost”来定义包含路径,但是,它抱怨错误,因为它在“/usr/ ...“ 小路。然后我尝试使用“-I/home/js/anaconda/.../include”(父目录),它工作正常!
我的问题是 1)为什么当我指定父目录“/home/.../include”而不是“/home/.../include/boost”时它会起作用?当我使用“-I”时我应该指定的正确目录是什么?
2)当我使用“-I”指定某个目录时,这些目录是否总是在/usr目录之前的目录?
【问题讨论】:
-
如何包含头文件?
-
@Someprogrammerdude 你好,谢谢你的回复。应用程序通过“#include
”包含头文件。 !!!哇,是这个原因吗?如果我将其更改为“#include<...>”(删除“boost”),它将适用于“-I -I/home/js/anaconda/.../include/boost”? -
是的,这就是问题所在。头文件路径附加到搜索路径以查找文件。话虽如此,您不应该真正将
boost添加到您的-Isearch 路径中,因为这可能会产生冲突(来自不同库的两个头文件可能具有相同的名称)。 -
@Someprogrammerdude 明白了,谢谢!顺便说一句,如果我设置
-I指向Include文件路径,编译器会不会总是在系统Include文件路径之前的-I路径中找到include文件? -
是的,那些用
-I添加的路径应该在“标准”路径之前。
标签: c++ boost compiler-errors