4
我想在wax上使用waf在osx上構建一個C++ opengl程序,但無法讓它正常工作。如何在osx上使用waf連接opengl和glut?
g++ main.cpp -framework GLUT -framework OpenGL
我用下面的WScript:
通常當我編譯一個OpenGL程序我在終端使用這個
top = '.'
out = 'build'
def options(opt):
opt.load('compiler_cxx')
def configure(conf):
conf.load('compiler_cxx')
# conf.env.append_value('LINKFLAGS', '-framework GLUT -framework OpenGL')
def build(bld):
bld.program(
source = 'main.cpp',
target = 'a',
linkflags = ["-framework GLUT", "-framework OpenGL"],
)
但是,當我建我得到它連接錯誤:
$ waf configure
Setting top to : /Users/tt/Documents/class/labs/Lab 3 fixed/src
Setting out to : /Users/tt/Documents/class/labs/Lab 3 fixed/src/build
Checking for 'g++' (c++ compiler) : /usr/bin/g++
'configure' finished successfully (0.040s)
$ waf
Waf: Entering directory `/Users/tt/Documents/class/labs/Lab 3 fixed/src/build'
[2/2] cxxprogram: build/main.cpp.1.o -> build/a
Undefined symbols for architecture x86_64:
"_glViewport", referenced from:
resize(int, int)in main.cpp.1.o
"_glMatrixMode", referenced from:
resize(int, int)in main.cpp.1.o
Camera::show() in main.cpp.1.o
"_glLoadIdentity", referenced from:
resize(int, int)in main.cpp.1.o
Camera::show() in main.cpp.1.o
"_gluPerspective", referenced from:
resize(int, int)in main.cpp.1.o
"_glutPostRedisplay", referenced from:
resize(int, int)in main.cpp.1.o
idle() in main.cpp.1.o
"_gluLookAt", referenced from:
Camera::show() in main.cpp.1.o
"_glRotatef", referenced from:
Camera::show() in main.cpp.1.o
"_glTranslatef", referenced from:
Camera::show() in main.cpp.1.o
"_glEnableClientState", referenced from:
Mesh::render() in main.cpp.1.o
"_glUseProgram", referenced from:
Mesh::render() in main.cpp.1.o
"_glGetAttribLocation", referenced from:
Mesh::render() in main.cpp.1.o
"_glEnableVertexAttribArray", referenced from:
Mesh::render() in main.cpp.1.o
"_glBindBuffer", referenced from:
Mesh::render() in main.cpp.1.o
Mesh::Mesh(char*)in main.cpp.1.o
"_glVertexPointer", referenced from:
Mesh::render() in main.cpp.1.o
"_glVertexAttribPointer", referenced from:
Mesh::render() in main.cpp.1.o
"_glNormalPointer", referenced from:
Mesh::render() in main.cpp.1.o
"_glDrawElements", referenced from:
Mesh::render() in main.cpp.1.o
"_glDisableClientState", referenced from:
Mesh::render() in main.cpp.1.o
"_glEnable", referenced from:
display() in main.cpp.1.o
"_glClearColor", referenced from:
display() in main.cpp.1.o
"_glClear", referenced from:
display() in main.cpp.1.o
"_glutSwapBuffers", referenced from:
display() in main.cpp.1.o
"_glCreateProgram", referenced from:
setupGLSL(char*)in main.cpp.1.o
"_glCreateShader", referenced from:
setupGLSL(char*)in main.cpp.1.o
"_glShaderSource", referenced from:
setupGLSL(char*)in main.cpp.1.o
"_glCompileShader", referenced from:
setupGLSL(char*)in main.cpp.1.o
"_glGetShaderiv", referenced from:
setupGLSL(char*)in main.cpp.1.o
"_glGetShaderInfoLog", referenced from:
setupGLSL(char*)in main.cpp.1.o
"_glAttachShader", referenced from:
setupGLSL(char*)in main.cpp.1.o
"_glLinkProgram", referenced from:
setupGLSL(char*)in main.cpp.1.o
"_glGenBuffers", referenced from:
Mesh::Mesh(char*)in main.cpp.1.o
"_glBufferData", referenced from:
Mesh::Mesh(char*)in main.cpp.1.o
"_glutInit", referenced from:
_main in main.cpp.1.o
"_glutInitDisplayMode", referenced from:
_main in main.cpp.1.o
"_glutInitWindowSize", referenced from:
_main in main.cpp.1.o
"_glutCreateWindow", referenced from:
_main in main.cpp.1.o
"_glutDisplayFunc", referenced from:
_main in main.cpp.1.o
"_glutIdleFunc", referenced from:
_main in main.cpp.1.o
"_glutReshapeFunc", referenced from:
_main in main.cpp.1.o
"_glutKeyboardFunc", referenced from:
_main in main.cpp.1.o
"_glutKeyboardUpFunc", referenced from:
_main in main.cpp.1.o
"_glutSpecialFunc", referenced from:
_main in main.cpp.1.o
"_glutMouseFunc", referenced from:
_main in main.cpp.1.o
"_glutMotionFunc", referenced from:
_main in main.cpp.1.o
"_glutMainLoop", referenced from:
_main in main.cpp.1.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Waf: Leaving directory `/Users/n7down/Documents/class/spring 2013/5542 (Real Time Rendering)/labs/Lab 3 fixed/src/build'
Build failed
-> task in 'a' failed (exit status 1):
{task 4537197904: cxxprogram main.cpp.1.o -> a}
['/usr/bin/g++', '-framework GLUT', '-framework OpenGL', 'main.cpp.1.o', '-o', '/Users/tt/Documents/class/labs/Lab 3 fixed/src/build/a']
有沒有辦法可以修復/做到這一點?
是否編譯? – drahnr 2013-03-11 19:50:31
當我在終端中使用g ++ main.cpp -framework GLUT -framework OpenGL時,我沒有收到任何編譯或鏈接錯誤。 – user2154611 2013-03-11 21:08:16
你使用的是什麼waf版本? – drahnr 2013-03-12 15:34:25