[英]Find exact location of <included> file in C++ at compilation time
我正在编译一个包含glui.h
的C ++文件。 依次包括glut.h
如下所示:
#include <GLUT/glut.h>
我的C ++文件使用CMake和Makefile成功编译。
但是,我不确定要包括哪个glut.h
副本。 是否可以在编译时发现计算机上已找到GLUT/glut.h
的位置? 如果有什么不同,我将在OSX 10.8下使用g ++进行编译。
(相对于OpenGL和GLUT,这显然有一个特定的答案,但是我特别希望寻找一个通用的答案,这将有助于我将来解决含糊的include
)
只需在编译时将-E标志添加到g ++ / gcc即可获得预处理器输出,该输出将告诉您完整路径中包含哪些头文件。
前几天我遇到了这个问题,并像这样解决了它:
$ 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
,但是您知道了)
您可以使用编译指示消息来指示源文件位置以及其他诊断信息。
#pragma message "Using file at: " __FILE__
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.