我们的开发环境大量使用具有本地修改标头的目录,编译器应该看到它们而不是“已提交”的“存储库”版本。
如果标题A包含标题B,则gcc在同一目录A中查找B,并且不遵循搜索路径。
所以我们在gcc上使用-I-
选项来防止这种情况发生。 Gcc将严格遵循include-path的层次结构。
与gcc4一样,-I-
选项已被弃用,并由-iqoute
重新定位。
我无法弄清楚如何使用-iquote
选项获得相同的行为,因为我认为它缺少在“当前”目录中禁用搜索的副作用。
请参阅http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#Invocation
任何想法如何实现相同的行为?
答案 0 :(得分:8)
AFAIK,除了在代码中使用#include <foo.h>
表单而不是#include "foo.h"
之外,没有其他方法可以停用您所抱怨的行为。
ISTR,但我没有找到一个参考,在不提供该方面的另一种机制的情况下弃用-I-
的理由是库通常使用#include "foo.h"
形式来确保它们自己获得内部头文件foo.h
和-I-
的使用在某些情况下会破坏它们,如果其他人碰巧在搜索路径上有一个类似名称的文件。