2010-11-13 3 views
0

Cela probablement très facile quand vous savez comment, mais je ne suis pas :)CMake: modifier la commande de liaison

Je suis en train de construire un code qui prend utilise opengl/rassasiement. J'utilise la version Cygwin de CMake opengl etc. La seule référence que je vois à opengl/gult est dans le CMakeLists.txt:

find_package(OpenGL REQUIRED) 
find_package(GLU REQUIRED) 
find_package(GLUT REQUIRED) 

Tout fonctionne bien jusqu'à l'étape de liaison, qui se termine par:

CMakeFiles/glview.dir/glview.c.o: In function `DrawGLScene': /cygdrive/C/code/libfreenect/examples/glview.c:88: undefined reference to `[email protected]' 
CMakeFiles/glview.dir/glview.c.o: In function `keyPressed': /cygdrive/C/code/libfreenect/examples/glview.c:96: undefined reference to `__imp 
etc. 

Après un git de googler je me suis dit ce que cMake est feading l'éditeur de liens un drapeau -lglut, quand il devrait être feading un drapeau -lgut32. En exécutant manuellement la commande reliant, je peux obtenir le programme de construction:

/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 

Mais je ne peux pas comprendre comment obtenir cmake pour générer cette commande pour moi, donc pas d'étapes manuelles sont nécessaires. Des idées que je devrais faire?

Cheers,

Rob

Répondre

1

c'est comment ajouter des bibliothèques pour créer un lien vers:

target_link_libraries(${TargetName} gut32) 

find_package assure que le paquet se trouve, pas plus.

+0

A travaillé, merci! – Robert

+0

Je pense qu'il devrait être target_link_libraries ($ {TargetName} $ {GLUT_LIBRARIES} $ {GLU_LIBRARIES} $ {OpenGL_LIBRARIES}) – berkus

+0

c'est sûrement possible; Je suppose que find_package crée ces variables alors? – stijn

Questions connexes