如何判断g ++在哪里可以找到包含文件?基本上如果我
#include <foo.h>
g ++将扫描搜索路径,使用任何包含选项添加或更改路径。但是,在几天结束时,有没有办法告诉f ++的绝对路径g ++选择编译?如果在无数的搜索路径中有多个foo.h,则特别相关。
没有一种方法可以实现...有没有办法让g ++告诉我在包含默认值和所有包含选项后它的最终搜索路径是什么?
答案 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"
这将(几乎可以肯定)导致在相关文件顶部附近出现编译错误。这应该会向您显示编译器看到的路径的编译器错误。
显然这比其他答案更糟糕,但有时这种技巧很有用。