1

我正在编译一个 C++ 文件,其中包括glui.h. 这又包括glut.h如下:

#include <GLUT/glut.h>

我的 C++ 文件使用 CMake 和 Makefile 成功编译。

但是,我不确定glut.h包含哪个副本。是否有可能在编译时发现我的计算机上GLUT/glut.h已找到的位置?如果它有所作为,我将在 OSX 10.8 下使用 g++ 编译它。

(这显然有一个相对于 OpenGL 和 GLUT 的特定答案,但我特别在寻找一个通用的答案,这将有助于我include在未来解决模棱两可的问题)

4

3 回答 3

4

编译时只需在 g++/gcc 中添加 -E 标志,您将获得预处理器输出,它将告诉您完整路径包含哪些头文件。

于 2013-10-02T20:53:48.470 回答
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,但你明白了)

于 2013-10-02T21:15:12.480 回答
1

You can use pragma message to indicate source file locations, along with other diagnostic info.

#pragma message "Using file at: " __FILE__
于 2013-10-02T21:02:26.347 回答