我们的开发环境大量使用带有本地修改 header 的目录,编译器应该看到这些 header ,而不是“提交的”“存储库”版本。
如果 header A 包含 header B,gcc 会在 A 所在的同一目录中查找 B,但不遵循搜索路径。
所以我们在 gcc 上使用了 -I-
选项来防止这种情况发生。 Gcc 将严格遵循 include-path 的层次结构。
与 gcc4 一样,-I-
选项已被弃用并由 -iqoute
取代。
我无法弄清楚如何使用 -iquote
选项获得相同的行为,因为我认为它没有在“当前”目录中禁用搜索的副作用。
参见 http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#Invocation
有什么想法可以实现相同的行为吗?
最佳答案
据我所知,除了使用 #include <foo.h>
表格之外,没有其他方法可以取消您所提示的行为。而不是 #include "foo.h"
在您的代码中。
ISTR,但我没能找到关于弃用 -I-
的理由的引用资料在没有为该方面提供另一种机制的情况下,库通常使用 #include "foo.h"
的形式。以确保他们获得自己的内部头文件 foo.h
和使用 -I-
在某些情况下,如果其他人恰好在搜索路径上有一个名称相似的文件,则在某些情况下会破坏它们。
关于c++ - 防止 gcc 在包含搜索路径上搜索当前目录 "-I-"选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12353429/