当你知道怎么做时,这可能很容易,但我不知道:)
我正在尝试构建一些使用opengl / glut的代码。我正在使用cygwin版本的cmake opengl等。我看到opengl / gult的唯一参考是在CMakeLists.txt中:
find_package(OpenGL REQUIRED)
find_package(GLU REQUIRED)
find_package(GLUT REQUIRED)
一切正常,直到链接阶段,结束于:
CMakeFiles/glview.dir/glview.c.o: In function `DrawGLScene': /cygdrive/C/code/libfreenect/examples/glview.c:88: undefined reference to `__imp__glutSwapBuffers@0'
CMakeFiles/glview.dir/glview.c.o: In function `keyPressed': /cygdrive/C/code/libfreenect/examples/glview.c:96: undefined reference to `__imp
etc.
在使用谷歌搜索后,我发现了这一点,因为cmake正在向链接器传播一个-lglut
标志,当它应该将它标记为-lgut32
时。通过手动执行链接命令,我可以获得要构建的程序:
/usr/bin/gcc.exe -Wall -O3 -g -Wl,--enable-auto-import CMakeFiles/glview.dir/glview.c.o -o glview.exe -Wl,--out-implib,libglview.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -L/cygdrive/C/code/libfreenect/lib ../lib/libfreenect.a -lGL -lGLU -lglut32 -lm -lpthread -lusb-1.0
但是我无法弄清楚如何让cmake为我生成这个命令,所以不需要手动步骤。任何想法我应该做什么?
干杯,
罗布
答案 0 :(得分:1)
这是如何添加库以链接到:
target_link_libraries( ${TargetName} gut32 )
find_package仅确保找到包,不再存在。