Posez votre question »

Installer sous Codeblocks avec MinGW une bibliothèque (librairie) compilée

Avril 2015




Prérequis


Vous disposez d'une version de Codeblocks fonctionnant avec le compilateur MinGW et vous avez récupéré un binaire d'une bibliothèque externe que vous voulez utiliser, et qui est aussi compilé pour MinGW.

Dans l'exemple qui suit, nous utiliserons la bibliothèque libcurl pour illustrer la méthode à utiliser, c'est à dire, à la date à laquelle ces lignes sont écrites, et pour la version actuelle stable de libcurl, ceci :

http://curl.haxx.se/gknw.net/7.28.1/dist-w32/curl-7.28.1-devel-mingw32.zip
(aller voir la version à jour sur http://curl.haxx.se/download.html)

Cette méthode peut être utilisée avec Codeblocks utilisant MinGW, pour n'importe quelle bibliothèque compilée pour MinGW.

Méthode

Décompression dans un répertoire centralisant les librairies externes utilisées


Décompressez l'archive contenant la bibliothèque compilée dans un répertoire pas trop compliqué, et avec un nom sans espaces.

Par exemple : c:\libs\curl-7.28.1-devel-mingw32\

Intégration au projet Codeblocks : 2 étapes


Dans Codeblocks, il y a 2 choses à faire pour qu'un projet puisse utiliser une bibliothèque additionnelle :

Indiquer au compilateur où il doit trouver les fichiers .h


Indiquer au compilateur où il doit trouver les fichiers .h permet à celui-ci de ne pas générer d'erreurs lorsque l'on insère des #include correspondant à la librairie dans le code source.

On fait cela dans : Project - Build options... - Cliquer sur la racine du projet (pas sur les cibles Debug ou Target, sinon les paramètres ne s'appliquent qu'à la cible)

Onglet "Search directories" - Add - aller chercher le répertoire de la librairie qui contient les .h (par exemple, dans le cas de libcurl c:\libs\curl-7.28.1-devel-mingw32\include) et sélectionner ce répertoire.

Indiquer à l'éditeur de liaisons où il doit trouver les binaires de la bibliothèque


Indiquer à l'éditeur de liaisons où il doit trouver les binaires de la bibliothèque permet à celui-ci de générer l'exécutable après compilation. Pour l'environnement MinGW, les binaires de la bibliothèque sont des fichiers dont l'extension est .a

On fait cela dans : Project - Build options... - Cliquer sur la racine du projet (pas sur les cibles Debug ou Target, sinon les paramètres ne s'appliquent qu'à la cible, sauf si on utilise des bibliothèques de débogage pour une librairie donnée, là il devient utile de distinguer selon les cibles)

Onglet "Linker settings" - Add - aller chercher le répertoire de la librairie qui contient les .a (par exemple, dans le cas de libcurl c:\libs\curl-7.28.1-devel-mingw32\lib) et sélectionner les parties de la librairie dont on a besoin dans le cadre de du projet.

Si vous ne savez pas, voyez la doc de la librairie (ou, au jugé, compiler le projet, voir les messages d'erreur, et ajouter les parties nécessaires, ou, à la brute, ajouter tout :-).

Remarques

fichiers .dll


En fonction de la façon dont vous paramétrez votre projet (liaison dynamique ou statique), vous pouvez avoir à copier des .dll dans le répertoire de l'exécutable (ou dans le PATH de Windows) pour que le chargement dynamique de la bibliothèque puisse avoir lieu.

Dans le cas de libcurl, les .dll sont contenus dans c:\libs\curl-7.28.1-devel-mingw32\bin

Il seraient à ajouter, par exemple, dans le répertoire "Target" du projet, contenant l'exécutable généré par la compilation (ou quelque part dans le PATH), et cela est nécessaire uniquement en cas de compilation avec liaison dynamique et pour lancer l'exécutable en dehors de l'environnement de développement.

Si vous ne l'avez pas fait, vous vous en apercevrez lors de l'exécution (en double cliquant sur le fichier .exe, donc) : un message va avertir du fait que telle ou telle .dll n'a pas été trouvée.

Chemins relatifs ou absolus


Lors que l'on paramètre Codeblocks (cf. étapes 2.2.1 et 2.2.2), après sélection d'une ressource, il vous est demandé "Keep this as a relative path ?".

En cas de réponse affirmative, cela signifie que Codeblocks ne va pas conserver le chemin absolu vers la ressource indiquée (par exemple "c:\libs\curl-7.28.1-devel-mingw32\lib\libcurl.a)", mais seulement le chemin relatif par rapport au répertoire du projet (par exemple, quelque chose comme "..\..\..\libs\curl-7.28.1-devel-mingw32\lib\libcurl.a).

C'est utile de spécifier un chemin relatif si les ressources sont accessibles sous le répertoire du projet, car le projet demeurera compilable sur une autre machine avec Codeblocks, les ressources étant au même endroit relativement au répertoire du projet, et ce quelque soit l'emplacement du projet sur la nouvelle machine.

En revanche, si les ressources sont ailleurs (il est mieux de les mettre ailleurs, pour regrouper les librairies à un endroit identifié où les différents projets pourront les trouver, comme c:\libs et éviter de les dupliquer), et que l'on déplace le projet, les références seront rompues. Dans ce cas, vous devriez spécifier des chemins absolus.

Ne pas copier la librairie externe dans les répertoire MinGW de Codeblocks


Cela peut marcher, et vous tomberez éventuellement sur des tutoriels qui vous disent de le faire.

Cependant, je vous déconseille de faire cela, sauf si vous voulez :

- faire un fouillis de votre installation de Codeblocks
- devoir réinstaller toutes vos librairies parce que vous mettez à jour Codeblocks ou MinGW, et que les répertoires par défaut de Codeblocks ou MinGW sont supprimés et recréés dans ce processus
- ne pas savoir où se trouve telle version de la librairie qui seule compile avec tel source que vous utilisez
- ne pas savoir comment mettre à jour vos librairies

Terminologie


Dans les lignes qui précèdent, on a utilisé le terme "bibliothèque" ou "librairie". Ce dernier est un anglicisme (du terme "library"), qui est souvent utilisé par les programmeurs.

On devrait dire, en bon français, "bibliothèque", mais on a supposé que les deux termes sont synonymes pour notre fiche :-)


Dal
Pour une lecture illimitée hors ligne, vous avez la possibilité de télécharger gratuitement cet article au format PDF :
Installer-sous-codeblocks-avec-mingw-une-bibliotheque-librairie-compilee.pdf

Réalisé sous la direction de , fondateur de CommentCaMarche.net.

A voir également

Dans la même catégorie

Instalar una librería compilada en Codeblocks con MinGW
Par Carlos-vialfa le 31 janvier 2013
Publié par [Dal]. - Dernière mise à jour par Internet Friends
Ce document intitulé «  Installer sous Codeblocks avec MinGW une bibliothèque (librairie) compilée  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.