在Mac上缺少OpenGL头文件

5
我正在尝试在Mac中使用OpenGL,但是当我包含glut头文件时,它会包含OpenGL头文件,然后无法找到OpenGL/gl.h头文件。 我在互联网上查找了这个问题,似乎这些文件应该位于/System/Library/Frameworks/OpenGL.framework/Headers目录中,但是这样的子目录不存在。我尝试重新安装XCode,但没有成功。 有什么建议应该如何继续进行。
一些具体信息: 这是/System/Library/Frameworks/OpenGL.framework/Versions/Current的内容:
localhost@Current$ ls -la
total 368
drwxr-xr-x   7 root  wheel     238 Oct  7  2012 .
drwxr-xr-x   4 root  wheel     136 Oct  7  2012 ..
drwxr-xr-x  16 root  wheel     544 Oct  7  2012 Libraries
-rwxr-xr-x   1 root  wheel  185184 Oct  3  2012 OpenGL
drwxr-xr-x   3 root  wheel     102 Jun 16  2011 PlugIns
drwxr-xr-x  14 root  wheel     476 Oct  7  2012 Resources
drwxr-xr-x   3 root  wheel     102 Oct  7  2012 _CodeSignature

谢谢大家

3个回答

5
在 Mavericks(10.9)中,这些被移动了。/System/Library/Frameworks 中的内容不再具有任何开发标题;它似乎纯粹是框架的部署构建。因此,Andés是正确的-他正在查找告诉他要找的地方,但他正在寻找的文件根本不存在。
相反,XCode本身将这些作为其安装的一部分存储-XCode配备了多个用于各种版本的OS X的SDK,在其中,有这些库的标题。例如:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers/

4

对于其他遇到这个问题的人来说,解决方案相当简单。问题可能是没有安装所有命令行工具,因此关键是要安装它们。您只需要按照帖子中建议的安装所有缺失的命令行工具。然后你就可以顺利运行一个漂亮的OpenGL Hello World程序:D:D


你应该“接受”这个答案,这样人们就不会认为问题仍未解决 ;) - Andon M. Coleman

0
在我所有的OS X开发机器上,我都有:/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers 我甚至有针对特定版本的SDK:

/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers/gl.h /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers/gl.h

...

[ andon@Aleph : ~ ] ls -lA "/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers"
total 1464
-rw-r--r--  1 root  wheel   557B Mar  3  2010 CGLContext.h
-rw-r--r--  1 root  wheel   381B Mar  3  2010 CGLCurrent.h
-rw-r--r--  1 root  wheel   389B Mar  3  2010 CGLDevice.h
-rw-r--r--  1 root  wheel    14K Mar  3  2010 CGLIOSurface.h
-rw-r--r--  1 root  wheel   128K Mar  3  2010 CGLMacro.h
-rw-r--r--  1 root  wheel   6.4K Feb 12  2011 CGLProfiler.h
-rw-r--r--  1 root  wheel    28K Feb 12  2011 CGLProfilerFunctionEnum.h
-rw-r--r--  1 root  wheel   1.5K Mar  3  2010 CGLRenderers.h
-rw-r--r--  1 root  wheel    14K Mar  3  2010 CGLTypes.h
-rw-r--r--  1 root  wheel   5.6K Mar  3  2010 OpenGL.h
-rw-r--r--  1 root  wheel   151K Mar  3  2010 gl.h
-rw-r--r--  1 root  wheel   267K Mar  3  2010 glext.h
-rw-r--r--  1 root  wheel   328B Mar  3  2010 gliContext.h
-rw-r--r--  1 root  wheel    63K Mar  3  2010 gliDispatch.h
-rw-r--r--  1 root  wheel    16K Mar  3  2010 glu.h
-rw-r--r--  1 root  wheel   2.6K Mar  3  2010 gluContext.h
-rw-r--r--  1 root  wheel   2.2K Mar  3  2010 gluMacro.h

无论文件在哪里,它在 .../Library/Frameworks/OpenGL.framework/... 中的事实都表明你需要将 -framework OpenGL 添加到编译器/链接器开关中,以便正确定位包含文件和库。

我不确定。我之前安装了XCode,但是当我再次重新安装时,它没有询问这些选项。我会深入研究一下。谢谢。顺便说一句,在OpenGL.Frameworks/..中没有Headers目录。 - Andrés
@Andrés:一开始就不应该有一个 - 它应该是 OpenGL.framework/Versions/Current/Headers,这实际上是大多数情况下指向 OpenGL.framework/Versions/A/Headers 的符号链接。 - Andon M. Coleman
请查看更新的问题。OpenGL.framework/目录中没有这样的子目录。 - Andrés
@Andrés:我已经没有任何想法了。自Xcode 4.0版本以来,他们一定改变了某些东西。我想到的最后一件事是 ls -lAr "/System/Library/Frameworks/OpenGL.framework/Versions/"。也许你有多个版本或什么的,一个用于二进制分发,另一个用于编译? - Andon M. Coleman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接