我正在编译包含glui.h
的C ++文件。这又包括glut.h
,如此:
#include <GLUT/glut.h>
我的C ++文件使用CMake和Makefile成功编译。
但是,我不确定是否包含glut.h
的哪个副本。是否有可能在编译时发现我的计算机上找到GLUT/glut.h
的位置?如果它有所不同,我在OSX 10.8下用g ++编译它。
(这显然有一个相对于OpenGL和GLUT的具体答案,但我特别想找到一个通用的答案,这将有助于我解决将来模棱两可的include
答案 0 :(得分:4)
在编译时只需将-E标志添加到g ++ / gcc,您将获得预处理器输出,它将告诉您完整路径中包含哪些头文件。
答案 1 :(得分:2)
前几天我遇到了这个问题,并解决了这个问题:
$ gcc -E writefile.c | grep stdio.h
# 1 "/usr/include/stdio.h" 1 3 4
# 28 "/usr/include/stdio.h" 3 4
# 29 "/usr/include/stdio.h" 2 3 4
# 35 "/usr/include/stdio.h" 2 3 4
# 37 "/usr/include/stdio.h" 2 3 4
# 45 "/usr/include/stdio.h" 3 4
# 65 "/usr/include/stdio.h" 3 4
# 75 "/usr/include/stdio.h" 3 4
# 76 "/usr/include/stdio.h" 2 3 4
(显然,我在工作中寻找的文件不是stdio.h
,但你明白了这一点。
答案 2 :(得分:1)
您可以使用pragma message来指示源文件位置以及其他诊断信息。
#pragma message "Using file at: " __FILE__