Linker cmake:更改链接器命令

Linker cmake:更改链接器命令,linker,cygwin,cmake,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

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

我正在尝试构建一些使用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.
在谷歌搜索了一git之后,我发现了这一点,因为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为我生成这个命令,所以不需要手动步骤。你知道我应该做什么吗

干杯


Rob

这是如何添加要链接到的库:

target_link_libraries( ${TargetName} gut32 )

find_-package只能确保找到包,而不是更多。

我认为它应该是目标链接库(${TargetName}${GLUT_-libraries}${GLU-libraries}${OpenGL_-libraries}),这当然是可能的;我猜find_package会创建这些变量吗?find_package会创建这些变量,是的,如果找到合适的库,它会将这些变量设置为每个组件所需库的实际列表。