如何判断包含头文件的位置?

时间:2011-04-29 16:34:59

标签: c++ c gcc include g++

如何判断g ++在哪里可以找到包含文件?基本上如果我

#include <foo.h>

g ++将扫描搜索路径,使用任何包含选项添加或更改路径。但是,在几天结束时,有没有办法告诉f ++的绝对路径g ++选择编译?如果在无数的搜索路径中有多个foo.h,则特别相关。

没有一种方法可以实现...有没有办法让g ++告诉我在包含默认值和所有包含选项后它的最终搜索路径是什么?

5 个答案:

答案 0 :(得分:88)

g++ -H ...

还将以一种格式打印包含文件的完整路径,该格式显示哪个标题包含哪个

答案 1 :(得分:68)

这将为make依赖项列出包含文件的绝对路径:

gcc  -M showtime.c

如果您不希望系统包含(即#include <something.h>),请使用:

gcc  -MM showtime.c

答案 2 :(得分:6)

当然可以使用

g++ -E -dI  ... (whatever the original command arguments were)

答案 3 :(得分:5)

如果您使用-MM或其中一个相关选项(-M等),您只会得到包含的标题列表,而不包含所有其他预处理器输出(您似乎得到了它)使用建议的g++ -E -dI解决方案。)

答案 4 :(得分:3)

如果您的构建过程非常复杂...

constexpr static auto iWillBreak = 
#include "where/the/heck/is/this/file.h"

这将(几乎可以肯定)导致在相关文件顶部附近出现编译错误。这应该会向您显示编译器看到的路径的编译器错误。

显然这比其他答案更糟糕,但有时这种技巧很有用。