繁体   English   中英

查找的确切位置 <included> 编译时使用C ++文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM