mac下安装配置freeglut,设置xcode

主要参考文章:

FreeGLUT doesn’t have any prebuild frameworks we can use with the OS X compilers. Fortunately, Mac OS X is a type of Unix and we can use unix commands to get it to build and install freeGLUT on OS X. Unfortunatey, OS X has some quirks we need to deal with.The first issue is that newer versions of OS X don’t have X11. You’ll have to installXQuartz, a quartz based port of X.org. Download the dmg and install it.Download the latest source from thefreeGLUT website.

Extract the archive, open a terminal window, cd to the extracted folder.Configure the installation using this command in the extracted folderenv CPPFLAGS="-I/opt/X11/include" LDFLAGS="-L/opt/X11/lib" ./configureWhen you installed XQuartz, it installs X11 to /opt/X11/lib. This command configures the build and tells it to look in /opt/X11/include for headers and /opt/X11/lib for library files.In freeGLUT 2.8.0 there’s a bug in the source code that causes to break in OS X. In the freeGLUT source directory you extracted go to progs -> demos -> smooth_opengl3 and open up smooth_openg13.c.Between lines 101 and 102 there’s a bunch type definitions that are already in glext.h that cause a conflict.

typedef void (APIENTRY *PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);typedef void (APIENTRY *PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);typedef void (APIENTRY *PFNGLBUFFERDATAPROC) (GLenum target, ourGLsizeiptr size, const GLvoid *data, GLenum usage);typedef GLuint (APIENTRY *PFNGLCREATESHADERPROC) (GLenum type);typedef void (APIENTRY *PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const ourGLchar **string, const GLint *length);typedef void (APIENTRY *PFNGLCOMPILESHADERPROC) (GLuint shader);typedef GLuint (APIENTRY *PFNGLCREATEPROGRAMPROC) (void);typedef void (APIENTRY *PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);typedef void (APIENTRY *PFNGLLINKPROGRAMPROC) (GLuint program);typedef void (APIENTRY *PFNGLUSEPROGRAMPROC) (GLuint program);typedef void (APIENTRY *PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);typedef void (APIENTRY *PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, ourGLchar *infoLog);typedef void (APIENTRY *PFNGLGETPROGRAMIVPROC) (GLenum target, GLenum pname, GLint *params);typedef void (APIENTRY *PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, ourGLchar *infoLog);typedef GLint (APIENTRY *PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const ourGLchar *name);typedef void (APIENTRY *PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);typedef void (APIENTRY *PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);typedef GLint (APIENTRY *PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const ourGLchar *name);typedef void (APIENTRY *PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);

All you have to do is sandwich it in some ifdef macros to make it stop complaining.

#ifndef __glext_h_typedef void (APIENTRY *PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);typedef void (APIENTRY *PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);typedef void (APIENTRY *PFNGLBUFFERDATAPROC) (GLenum target, ourGLsizeiptr size, const GLvoid *data, GLenum usage);typedef GLuint (APIENTRY *PFNGLCREATESHADERPROC) (GLenum type);typedef void (APIENTRY *PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const ourGLchar **string, const GLint *length);typedef void (APIENTRY *PFNGLCOMPILESHADERPROC) (GLuint shader);typedef GLuint (APIENTRY *PFNGLCREATEPROGRAMPROC) (void);typedef void (APIENTRY *PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);typedef void (APIENTRY *PFNGLLINKPROGRAMPROC) (GLuint program);typedef void (APIENTRY *PFNGLUSEPROGRAMPROC) (GLuint program);typedef void (APIENTRY *PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);typedef void (APIENTRY *PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, ourGLchar *infoLog);typedef void (APIENTRY *PFNGLGETPROGRAMIVPROC) (GLenum target, GLenum pname, GLint *params);typedef void (APIENTRY *PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, ourGLchar *infoLog);typedef GLint (APIENTRY *PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const ourGLchar *name);typedef void (APIENTRY *PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);typedef void (APIENTRY *PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);typedef GLint (APIENTRY *PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const ourGLchar *name);typedef void (APIENTRY *PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);#endif

Then in the terminal enter the make command (make sure the terminal is in the directory you extracted)make allNow using root privileges, install the library with the command:sudo make installNow that you’ve installed the development libraries, it’s time to start up your IDE/compiler.

make all 出现错误:

PFNGLGENBUFFERSPROC gl_GenBuffers;

^

PFNGLBINDBUFFERPROC gl_BindBuffer;

^

PFNGLBUFFERDATAPROC gl_BufferData;

^

PFNGLCREATESHADERPROC gl_CreateShader;

^

PFNGLSHADERSOURCEPROC gl_ShaderSource;

^

PFNGLCOMPILESHADERPROC gl_CompileShader;

^

PFNGLCREATEPROGRAMPROC gl_CreateProgram;

^

PFNGLATTACHSHADERPROC gl_AttachShader;

^

PFNGLLINKPROGRAMPROC gl_LinkProgram;

^

PFNGLUSEPROGRAMPROC gl_UseProgram;

^

PFNGLGETSHADERIVPROC gl_GetShaderiv;

^

PFNGLGETSHADERINFOLOGPROC gl_GetShaderInfoLog;

^

PFNGLGETPROGRAMIVPROC gl_GetProgramiv;

^

PFNGLGETPROGRAMINFOLOGPROC gl_GetProgramInfoLog;

^

PFNGLGETATTRIBLOCATIONPROC gl_GetAttribLocation;

^

PFNGLVERTEXATTRIBPOINTERPROC gl_VertexAttribPointer;

^

‘PFNGLENABLEVERTEXATTRIBARRAYPROC’

PFNGLENABLEVERTEXATTRIBARRAYPROC gl_EnableVertexAttribArray;

^

PFNGLGETUNIFORMLOCATIONPROC gl_GetUniformLocation;

^

PFNGLUNIFORMMATRIX4FVPROC gl_UniformMatrix4fv;

^

fatal error: too many errors emitted, stopping now [-ferror-limit=]

20 errors generated.

make[4]: *** [smooth_opengl3-smooth_opengl3.o] Error 1

make[3]: *** [all-recursive] Error 1

make[2]: *** [all-recursive] Error 1

make[1]: *** [all-recursive] Error 1

有问题,于是把修改的宏去掉。重新make all。没有报错。make install.

再参考:

Start up XCode and create a command line tool project.以后我会去到很多很繁华或苍凉,

mac下安装配置freeglut,设置xcode

相关文章:

你感兴趣的文章:

标签云: