Bonjour,
J'ai un projet qui tourne sous Windows et on m'a demandé de le porter sous Linux tout simplement pour une raison de librairie annexe dont on a besoin et dont le seule licence disponible au labo est sous Linux. Je tiens à préciser que je n'ai jamais vraiment fait de "gros" projet sous Linux avant donc je me tourne vers vous vu que j'ai un problème que je n'arrive pas à résoudre.
Sous WIndows le projet était composé de plusieurs sous projets. J'ai donc décider d'utiliser CMake pour faire la même chose. Disons pour le moment que j'ai un projet A et un projet B qui doit utiliser la librairie statique A. Jusque là pas de problème.
Maintenant mon projet B utilise des fonctions Glut. Pour la compilation je n'ai pas de problème, mais le link ne passe pas.
Voilà les erreurs que j'ai (j'ai coupé la fin car il y a enormément d'erreurs de link du même style) :
Et au passage voici mon CMakeLists.txt pour le projet B
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 [ 75%] Building CXX object Bvh/CMakeFiles/Bvh.dir/Bvh.o In file included from /afs/inf.ed.ac.uk/user/v/v1lhoyet/Motion/Bvh/Bvh.cpp:4: /afs/inf.ed.ac.uk/user/v/v1lhoyet/Motion/Glut/include/GL/glut.h:19:1: warning: "APIENTRY" redefined In file included from /afs/inf.ed.ac.uk/user/v/v1lhoyet/Motion/Glut/include/GL/glut.h:14, from /afs/inf.ed.ac.uk/user/v/v1lhoyet/Motion/Bvh/Bvh.cpp:4: /usr/include/GL/gl.h:104:1: warning: this is the location of the previous definition [100%] Building CXX object Bvh/CMakeFiles/Bvh.dir/Joint.o Linking CXX static library libBvh.a [100%] Built target Bvh [gossip]v1lhoyet: cd .. [gossip]v1lhoyet: make [ 40%] Built target Mathematics [ 80%] Built target Bvh Scanning dependencies of target Test [100%] Building CXX object Tests/CMakeFiles/Test.dir/test.o /afs/inf.ed.ac.uk/user/v/v1lhoyet/Motion/Tests/test.cpp: In function â: /afs/inf.ed.ac.uk/user/v/v1lhoyet/Motion/Tests/test.cpp:9: warning: converting to â from â Linking CXX executable Test /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.a(libglut_la-freeglut_init.o): In function `glutInit': (.text+0x369): undefined reference to `glXQueryExtension' /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.a(libglut_la-freeglut_main.o): In function `fghcbDisplayWindow': (.text+0x198): undefined reference to `glViewport' /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.a(libglut_la-freeglut_main.o): In function `glutMainLoopEvent': (.text+0xa95): undefined reference to `glViewport' /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
Est-ce que quelqu'un peut m'aider ? J'ai cru comprendre que ça pourrait venir du fait qu'il faille linker avec la librairie X11, mais je n'arrive pas à m'en dépaitouiller ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 # Make sure the compiler can find include files from our libraries. include_directories (${MOTION_SOURCE_DIR}/Mathematics) include_directories (${MOTION_SOURCE_DIR}/Glut/include/GL) # Make sure the linker can find the libraries once it is built. link_directories (${MOTION_BINARY_DIR}/Mathematics) link_directories (${MOTION_BINARY_DIR}/Glut/lib/glut/) link_directories (/usr/lib/X11/) # Create the "Bvh" library. add_library (Bvh Bvh.cpp Joint.cpp) # Link the executable to the libraries. target_link_libraries (Bvh Mathematics libglut.a)
Merci d'avance
Partager