阻止 gcc 在包含搜索路径上搜索当前目录“-I-”选项

Posted

技术标签:

【中文标题】阻止 gcc 在包含搜索路径上搜索当前目录“-I-”选项【英文标题】:prevent gcc from searching the current dir "-I-" option on include search path 【发布时间】:2012-09-03 10:08:16 【问题描述】:

我们的开发环境大量使用具有本地修改的标头的目录,编译器应该看到这些目录,而不是“提交的”“存储库”版本。

如果 header A 包含 header B,gcc 会在 A 所在的同一目录中查找 B,并且不遵循 seach 路径。 所以我们在 gcc 上使用了-I- 选项来防止这种情况。然后 Gcc 将严格遵循包含路径的层次结构。 与 gcc4 一样,-I- 选项已弃用并由-iqoute 替换。 我不知道如何使用 -iquote 选项获得相同的行为,因为我认为它缺乏在“当前”目录中禁用搜索的副作用。

见http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#Invocation

任何想法如何实现相同的行为?

【问题讨论】:

【参考方案1】:

AFAIK,除了在代码中使用 #include <foo.h> 代替 #include "foo.h" 之外,没有其他方法可以停用您抱怨的行为。

ISTR,但我没有找到参考资料,即弃用 -I- 而没有为此提供另一种机制的理由是库通常使用 #include "foo.h" 的形式来确保它们获得自己的内部头文件 @ 987654325@ 和 -I- 的使用在某些情况下会破坏它们,如果其他人碰巧在搜索路径上有类似名称的文件。

【讨论】:

以上是关于阻止 gcc 在包含搜索路径上搜索当前目录“-I-”选项的主要内容,如果未能解决你的问题,请参考以下文章

clang在同一目录中包含多个搜索路径

GCC中 -I-L-l 选项的作用

gcc 查看 引用头文件的位置

linux下gcc默认搜索头文件及库文件的路径

linux-gcc 编译时头文件和库文件搜索路径

操作包含文件的搜索路径