几个星期以前开始折腾在我的MBA上写 OpenGL 小程序。我不太熟悉MacOS上的开发工具比如XCode,所以一开始的想法就是用vim来写程序,然后手工编译链接。网上查了一下,MacOS上的OpenGL编译选项跟 windows 和 Linux 上的很不一样, 不是用 -I 来指定头文件搜索路径,用-l来链接库文件。MacOS SDK把一些应用库包装成了所谓的“Framework”,其中就包括OpenGL,GLUT 和 Cocoa。所以MacOS下的OpenGL程序(我用到了GLUT)是这样编译的:
g++ -framework OpenGL -framework GLUT -framework Cocoa helloworld.cpp -o helloworld
-framework 选项兼具了-I 和 -l 的功能。但是当我使用上面的命令行编译我的程序的时候,编译器报错说:
In file included from helloworld.cpp:1:/System/Library/Frameworks/GLUT.framework/Headers/glut.h:60:23: error: OpenGL/gl.h: No such fileor directory/System/Library/Frameworks/GLUT.framework/Headers/glut.h:61:24: error: OpenGL/glu.h: No such file or directory
我稍微研究了一下,发现除了OpenGL之外的其他framework,在/System/Library/Frameworks/.framework 下都有一个Headers 目录,里面放着必要的头文件。唯独OpenGL 不是这样。/System/Library/Frameworks/OpenGL.framework 下的内容如下: