>

2014年9月2日火曜日

AntTweakBarをMac OSX 10.9でビルドしようとするとエラーが出る件

AntTweakBarをMac OSX 10.9でビルドしようと
$make -f Makefile.osx
を実行すると下のようなエラーが出て戸惑う。噂ではOSX 10.8から出るようなったらしい。

 TwOpenGLCore.o TwOpenGLCore.cpp
In file included from TwOpenGLCore.cpp:22:
./LoadOGLCore.h:149:24: error: conflicting types for 'glMultiDrawElements'ANT_GL_CORE_DECL(void, glMultiDrawElements, (GLenum mode, const GLsizei ...
                       ^./LoadOGLCore.h:34:36: note: expanded from macro 'ANT_GL_CORE_DECL'
        extern "C" { _Ret APIENTRY _Fct _Params; }
                                   ^/System/Library/Frameworks/OpenGL.framework/Headers/gl.h:2836:13: note:       previous declaration is here
extern void glMultiDrawElements (GLenum mode, const GLsizei *count, GLen...
            ^In file included from TwOpenGLCore.cpp:22:
./LoadOGLCore.h:214:24: error: conflicting types for 'glShaderSource'ANT_GL_CORE_DECL(void, glShaderSource, (GLuint shader, GLsizei count, co...
                       ^./LoadOGLCore.h:34:36: note: expanded from macro 'ANT_GL_CORE_DECL'
        extern "C" { _Ret APIENTRY _Fct _Params; }
                                   ^/System/Library/Frameworks/OpenGL.framework/Headers/gl.h:2923:13: note:       previous declaration is here
extern void glShaderSource (GLuint shader, GLsizei count, const GLchar* ...
            ^2 errors generated.
make: *** [TwOpenGLCore.o] Error 1
これは何かっていうと/System/Library/Frameworks/OpenGL.framework/Headers/gl.hで定義されている関数をAntTweakBarのAntTweakBar/src/TwOpenGLCore.hの中で参照しているんだけど関数の引数が合っていないよ!というエラーであり、どうやらいつかの更新でOSXに同梱されているgl.hの関数宣言に変更(といっても修飾子の軽微な変更)があったのが原因らしい。
そこで今のgl.h内の関数宣言に合わせてAntTweakBar/src/TwOpenGLCore.hの中身に次の二つの編集を加えれば良い。ファイル内の修正場所は関数名とかで検索して見つけてください。
  1. ANT_GL_CORE_DECL(void, glMultiDrawElements, (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* * indices, GLsizei primcount))

    ANT_GL_CORE_DECL(void, glMultiDrawElements, (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const * indices, GLsizei primcount))
    に修正。(引数indicesの修飾子に後付けのconstを追加。)
  2. ANT_GL_CORE_DECL(void, glShaderSource, (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length))

    ANT_GL_CORE_DECL(void, glShaderSource, (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length))
    に修正。(引数stringの修飾子に後付けのconstを追加。)
上記修正をしてからもう一回
$make -f Makefile.osx
でビルドすれば通るようになるはず。

0 件のコメント: