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
A travaillé, merci! – Robert
Je pense qu'il devrait être target_link_libraries ($ {TargetName} $ {GLUT_LIBRARIES} $ {GLU_LIBRARIES} $ {OpenGL_LIBRARIES}) – berkus
c'est sûrement possible; Je suppose que find_package crée ces variables alors? – stijn