cmake:改变链接器命令

时间:2010-11-13 16:03:12

标签: linker cygwin cmake

当你知道怎么做时,这可能很容易,但我不知道:)

我正在尝试构建一些使用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为我生成这个命令,所以不需要手动步骤。任何想法我应该做什么?

干杯,

罗布

1 个答案:

答案 0 :(得分:1)

这是如何添加库以链接到:

target_link_libraries( ${TargetName} gut32 )

find_package仅确保找到包,不再存在。