Notez que vous n'avez pas besoin de tant de -l
s si vous installez glfw avec le BUILD_SHARED_LIBS
option. (Vous pouvez activer cette option en exécutant ccmake
premier).
Par ici sudo make install
installera la bibliothèque partagée dans /usr/local/lib/libglfw.so
.Vous pouvez ensuite compiler le fichier d'exemple avec un simple :
g++ main.cpp -L /usr/local/lib/ -lglfw
Alors n'oubliez pas d'ajouter /usr/local/lib/ au chemin de recherche des bibliothèques partagées avant d'exécuter votre programme. Cela peut être fait en utilisant :
export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}
Et vous pouvez mettre ça dans votre ~/.bashrc
vous n'avez donc pas à le taper tout le temps.
Étape 1 :Installer GLFW 3 sur votre système avec CMAKE
Pour cette installation, j'utilisais KUbuntu 13.04, 64bit.
La première étape consiste à télécharger la dernière version (en supposant que les versions futures fonctionnent de la même manière) depuis www.glfw.org, probablement en utilisant ce lien.
L'étape suivante consiste à extraire l'archive et à ouvrir un terminal. cd
dans le répertoire glfw-3.X.X et exécutez cmake -G "Unix Makefiles"
vous aurez peut-être besoin de privilèges élevés, et vous devrez peut-être également installer d'abord les dépendances de construction . Pour ce faire, essayez sudo apt-get build-dep glfw
ou sudo apt-get build-dep glfw3
ou faites-le manuellement , comme je l'ai fait avec sudo apt-get install cmake xorg-dev libglu1-mesa-dev
... Il peut y avoir d'autres bibliothèques dont vous avez besoin, telles que les bibliothèques pthread... Apparemment, je les avais déjà. (Voir les options -l données à l'étape de l'éditeur de liens g++, ci-dessous.)
Vous pouvez maintenant taper make
puis make install
, ce qui vous obligera probablement à sudo
d'abord.
D'accord, vous devriez obtenir une sortie détaillée sur les trois dernières étapes de CMake, vous indiquant ce qui a été construit ou où il a été placé. (En /usr/include
, par exemple.)
Étape 2 :Créer un programme de test et compiler
L'étape suivante consiste à lancer vim ("quoi ?! vim ?!" vous dites) ou votre IDE/éditeur de texte préféré... Je n'ai pas utilisé vim, j'ai utilisé Kate, car je suis sur KUbuntu 13.04... Quoi qu'il en soit, téléchargez ou copiez le programme de test à partir d'ici (en bas de la page) et enregistrez, quittez.
Compilez maintenant en utilisant g++ -std=c++11 -c main.cpp
- je ne sais pas si c++11 est requis mais j'ai utilisé nullptr
donc, j'en avais besoin... Vous devrez peut-être mettre à jour votre gcc vers la version 4.7, ou la prochaine version 4.8... Infos à ce sujet ici.
Corrigez ensuite vos erreurs si vous avez tapé le programme à la main ou essayé d'être "trop intelligent" et que quelque chose n'a pas fonctionné... Alors liez-le en utilisant ce monstre ! g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
Donc, vous voyez, dans la partie "installer les dépendances de construction", vous pouvez également vérifier que vous avez le développement bibliothèques installées également. Peut-être aussi mettre à jour vos pilotes graphiques, je pense que GLFW 3 peut nécessiter OpenGL version 3 ou supérieure ? Peut-être que quelqu'un peut le confirmer ? Vous devrez peut-être également ajouter les options de l'éditeur de liens -ldl -lXinerama -lXcursor
pour le faire fonctionner correctement si vous obtenez des références indéfinies à dlclose
(crédit à @user2255242).
Et, oui, j'avais vraiment besoin de tant de -l
s !
Étape 3 :Vous avez terminé, passez une bonne journée !
J'espère que ces informations étaient correctes et que tout a fonctionné pour vous, et que vous avez aimé écrire le programme de test GLFW. J'espère également que ce guide a aidé, ou aidera, à l'avenir, quelques personnes qui se débattaient comme je l'étais aujourd'hui hier !
Au fait, toutes les balises sont les choses que j'ai recherchées sur stackoverflow à la recherche d'une réponse qui n'existait pas. (Jusqu'à présent.) J'espère qu'ils correspondent à ce que vous recherchiez si vous étiez dans une situation similaire à la mienne.
Remarque de l'auteur :
Ce n'est peut-être pas une bonne idée. Cette méthode (utilisant sudo make install) peut être dangereuse pour votre système. (Voir Ne cassez pas Debian)
Idéalement, moi, ou quelqu'un d'autre, devrait proposer une solution qui ne se contente pas d'installer les fichiers lib, etc. dans les répertoires par défaut du système, car ceux-ci doivent être gérés par des gestionnaires de packages tels que apt
, et cela peut provoquer un conflit et casser votre système de gestion de paquets.
Voir la nouvelle "réponse 2020" pour une solution alternative.
Je l'ai résolu de cette façon
Un fichier pkg-config décrit tous les indicateurs et dépendances nécessaires à la compilation et à la liaison nécessaires pour utiliser une bibliothèque.
pkg-config --static --libs glfw3
me montre que
-L/usr/local/lib -lglfw3 -lrt -lXrandr -lXinerama -lXi -lXcursor -lGL -lm -ldl -lXrender -ldrm -lXdamage -lX11-xcb -lxcb-glx -lxcb-dri2 -lxcb-dri3 -lxcb-present -lxcb-sync -lxshmfence -lXxf86vm -lXfixes -lXext -lX11 -lpthread -lxcb -lXau -lXdmcp
Je ne sais pas si toutes ces bibliothèques sont réellement nécessaires pour compiler mais pour moi ça marche...