Comment on installe la SDL ?
L'installation d'une bibliothèque est en général un petit peu plus compliquée que les installations dont vous avez l'habitude. Ici, il n'y a pas d'installeur automatique qui vous demande de bêtement cliquer sur
Suivant - Suivant - Suivant - Terminer
En général, installer une bibliothèque est assez difficile pour un débutant. Pourtant, si ça peut vous remonter le moral, l'installation de la SDL est beaucoup plus simple que bien d'autres bibliothèques que j'ai eu l'occasion d'utiliser (en général on ne vous donne que le code source de la bibliothèque, et c'est à vous de la recompiler !).
En fait, le mot "installer" n'est peut-être pas celui qui convient le mieux. Nous n'allons rien installer du tout : nous voulons simplement arriver à créer un nouveau projet de type SDL avec notre IDE.
Or, selon l'IDE que vous utilisez la manipulation sera un peu différente. Je vais présenter la manip' pour chacun des IDE que je vous ai montrés au début du cours pour que personne ne se sente désavantagé.
Personnellement j'ai l'habitude de coder le plus souvent sous Visual C++, surtout parce qu'il possède un débugger qui m'aide à retrouver mes erreurs. Si vous n'utilisez pas Visual, je vous recommande Code::Blocks qui est, à mes yeux, un excellent second choix.
Je vais maintenant vous montrer comment créer un projet SDL sous chacun de ces 3 IDE.
Création d'un projet SDL sous Code::Blocks
1/ Extraction des fichiers de la SDL
Ouvrez le fichier compressé de "Development Libraries" que vous avez téléchargé.
Ce fichier est un .zip pour Visual et un .tar.gz pour mingw32 (il vous faudra un logiciel comme Winrar ou 7-Zip pour décompresser le .tar.gz).
Le fichier compressé contient plusieurs sous-dossiers. Ceux qui nous intéressent sont les suivants :
- bin : contient la .dll de la SDL
- docs : contient la documentation de la SDL
- include : contient les .h
- lib : contient les .a (ou .lib pour visual)
Vous devez extraire tous ces fichiers et dossiers quelque part sur votre disque dur. Vous pouvez par exemple les placer dans le dossier de Code::Blocks, dans un sous-dossier "SDL" :
Le dossier de la SDL contenant tous les fichiers a été surligné
Dans mon cas, la SDL sera installée dans le dossier :
C:\Program Files\CodeBlocks\SDL-1.2.13
Retenez bien le nom du dossier dans lequel vous l'avez installée, vous allez en avoir besoin pour configurer Code::Blocks.
Maintenant, il va falloir faire une petite manipulation pour simplifier la suite. Allez dans le sous-dossier include/SDL (dans mon cas, il se trouve dans
C:\Program Files\CodeBlocks\SDL-1.2.13\include\SDL).
Vous devriez voir plein de petits fichiers .h. Copiez-les dans le dossier parent, c'est-à-dire dans
C:\Program Files\CodeBlocks\SDL-1.2.13\include. Faites un copier / coller, ce sera le plus simple.
Je veux que tous les fichiers .h soient donc aussi placés dans C:\Program Files\CodeBlocks\SDL-1.2.13\include, c'est important pour la suite.
Voilà la SDL est installée
2/ Création du projet SDL
Ouvrez maintenant Code::Blocks et demandez à créer un nouveau projet.
Là, au lieu de créer un projet "
Console Application" comme vous aviez l'habitude de faire, vous allez demander à créer un projet "
SDL project".
La première fenêtre de l'assistant qui apparaît ne sert à rien, faites "Next".
On vous demande ensuite le nom de votre projet et le dossier dans lequel il doit être placé, comme vous l'avez toujours fait.
Vient ensuite la partie où vous devez indiquer où se trouve installée la SDL :
Cliquez sur le bouton "..." à droite. Une nouvelle fenêtre un peu complexe s'ouvre :
Vous devez simplement remplir le champ que j'ai surligné : "base". Indiquez le dossier où vous avez décompressé la SDL. Dans mon cas, c'est :
C:\Program Files\CodeBlocks\SDL-1.2.13
Cliquez sur Close.
Une nouvelle fenêtre apparaît. C'est une fenêtre-piège (dont je n'ai pas compris l'intérêt

) qui sert juste à vous embrouiller. Elle vous demande un dossier. Cliquez sur "Annuler" pour ne rien faire :
Cliquez ensuite sur "Next" dans l'assistant, puis choisissez de compiler en mode "Release" ou "Debug" (peu importe) et enfin faites "Finish".
Code::Blocks va créer un petit projet SDL de test comprenant un main.c et un fichier .bmp. Avant d'essayer de le compiler, copiez la DLL de la SDL (
C:\Program Files\CodeBlocks\SDL-1.2.13\bin\SDL.dll) dans le dossier de votre projet (ex. :
C:\Users\Mateo\Projets\testsdl).
Essayez ensuite de compiler : une fenêtre avec une image devrait s'afficher. Bravo, ça fonctionne !
Vous pouvez supprimer le .bmp du programme, on n'en aura pas besoin.
Quant au fichier main.c, il est un peu long, on ne va pas démarrer avec ça. Supprimez tout son contenu, et remplacez-le par :
Code : C | #include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
int main(int argc, char *argv[])
{
return 0;
}
|
C'est en fait un code de base très similaire à ceux que l'on connaît (un include de stdlib, un autre de stdio, un main...).
La seule chose qui change, c'est l'include d'un fichier SDL.h. C'est le fichier .h de base de la SDL qui se chargera d'inclure tous les autres fichiers .h de la SDL. Bref, en incluant SDL.h, cela inclue automatiquement tous les fichiers .h nécessaires au bon fonctionnement de la SDL (et il y en a plein !).
Création d'un projet SDL sous Visual C++
1/ Extraction des fichiers de la SDL
Sur le
site de la SDL, téléchargez la dernière version de la SDL. Dans la section "Development Libraries", prenez la version pour Visual C++ 2005 Service Pack 1.
Ouvrez le fichier zip.
Il contient la doc (dossier docs), les .h (dossier include), et les .lib (dossier lib) qui sont l'équivalent des .a pour le compilateur de Visual. Vous trouverez aussi le fichier SDL.dll dans ce dossier lib.
- Copiez SDL.dll dans le dossier de votre projet
- Copiez les .lib dans le dossier lib de Visual C++. Par exemple chez moi il s'agit du dossier :
C:\Program Files\Microsoft Visual Studio 8\VC\lib
- Copiez les .h dans le dossier "includes" de Visual C++. Créez un dossier "SDL" dans ce dossier "includes" pour regrouper les .h de la SDL entre eux.
Chez moi, je mets donc les .h dans le dossier :
C:\Program Files\Microsoft Visual Studio 8\VC\include\SDL
2/ Création d'un nouveau projet SDL
Sous Visual C++, créez un nouveau projet de type "Application console Win32" :
Appelez votre projet "testsdl" par exemple. Cliquez sur OK.
Un assistant va s'ouvrir. Allez dans "Paramètres de l'application" et vérifiez que "Projet vide" est coché :
Le projet est alors créé. Il est vide.
Ajoutez-y un nouveau fichier en faisant un clic droit sur "Fichiers sources", "Ajouter" / "Nouvel élément".
Dans la fenêtre qui s'ouvre, demandez à créer un nouveau fichier de type "Fichier C++ (.cpp)" que vous appellerez "main.c". En mettant l'extension .c dans le nom du fichier, Visual créera un fichier .c et non un fichier .cpp.
Mettez le code "de base" dans votre nouveau fichier vide :
Code : C | #include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
int main(int argc, char *argv[])
{
return 0;
}
|
3/ Configuration du projet SDL sous Visual C++
La configuration du projet est un peu plus délicate que pour Code::Blocks, mais y'a pas mort d'homme je vous rassure

Allez dans les propriétés de votre projet : "Projet" / "Propriétés de testsdl".
- Dans la section "C / C++ => Génération de code", mettez "Bibliothèque runtime" à "DLL multithread (/MD)"
- Dans la section "C/C++ => Avancé", sélectionnez "Compilation sous" et mettez la valeur "Compiler comme code C (/TC)" (sinon visual vous compilera votre projet comme étant du C++).
- Dans la section "Editeur de liens => Entrée", modifiez la valeur de "Dépendances supplémentaires" pour y ajouter "SDL.lib SDLmain.lib"
- Dans la section "Editeur de liens => Système", modifiez la valeur de "Sous-système" et mettez-la à "Windows" (capture ci-dessous).
Validez ensuite vos modifications en cliquant sur OK et enregistrez le tout.
Vous pouvez maintenant compiler en allant dans le menu "Générer / Générer la solution".
Rendez-vous dans le dossier de votre projet pour y trouver votre exécutable (il sera peut-être dans un sous-dossier Debug). N'oubliez pas que le fichier SDL.dll doit se trouver dans le même dossier que l'exécutable.
Double-cliquez sur votre .exe : si tout va bien, il ne devrait rien se passer. Sinon, s'il y a une erreur c'est probablement que le fichier SDL.dll ne se trouve pas dans le même dossier
Création d'un projet SDL avec Xcode (Mac OS)
Cette section a été rédigée par guimers8
Commencez par télécharger la version de la SDL sur le site officiel : c'est le fichier qui porte l'extension « dmg » dans la section «
Runtime Libraries ». Montez (chargez) ce fichier, prenez le dossier SDL.framework et placez-le dans le dossier :
<Racine Disque>/Library/Frameworks.
Si votre système est en français, il est probable que vous voyiez :
<Racine Disque>/Bibliothèque/Frameworks
Le dossier SDL.framework contient tout les fichiers nécessaires au bon fonctionnement de la SDL, dont les binaires et les headers.
Vous obtenez donc ceci :
Les frameworks dans leur dossier : vous pouvez voir notamment SDL.framework.
Il vous faut à présent télécharger le fichier dmg qui se trouve dans la section «
Development Libraries ». Montez le fichier, et dans le dossier
XcodeTemplates, copiez le contenu du dossier correspondant votre version de Mac OS X dans
<Racine Disque>/Developer/Library/Xcode/Project Templates/Application, comme le montre cette capture d'écran :
L'assistant de création de nouveau projet de Xcode vous proposera alors de créer une SDL Application :
Et voilà votre projet est créé.
Et sous Linux ?
Pour Linux, on peut être encore plus fainéant : on va demander à notre ordinateur de télécharger et d'installer tout le bazar à notre place, comme ça on n'a même pas besoin d'aller sur le site web de la SDL ! Je vais ici vous expliquer la démarche pour un Code::Blocks tournant sur Ubuntu, mais ça sera quasiment la même chose sur les autres distributions Linux.
Je vous propose de travailler à partir du Terminal (Applications>Accessoires>Terminal).
Pour ceux d'entre vous qui seraient allergiques à l'interface console, vous pouvez aussi utiliser Synaptic qui est accessible à partir du menu Système>Administration>Gestionnaire de paquets Synaptic.
Étape 1 : installation de SDL
Les bibliothèques qui nous intéressent sont généralement dans les dépôts par défaut, et sont fournies par des paquets dont les noms commencent par “libsdl” ; rien de sorcier : lib pour "library" et sdl pour SDL...
En clair, tapez :
Code : Console
Ce qui nous donne la liste des paquets liés d'une façon ou d'une autre à la SDL. Certains on un nom qui se termine par “-dev” : il s'agit des "
development libraries", c'est à dire ce qui nous intéresse (cf le paragraphe pour windows pour plus de détails).
Et il y en a plus d'un paquet « -dev » dans la liste! En fait, il n'y a qu'un seul paquet dont on ne pourra pas se passer : “libsdl1.2-dev”, pour les autres vous verrez en fonction de vos besoins.
Allons-y :
Code : Console | sudo aptitude install libsdl1.2-dev |
Ça télécharge, ça installe, parfait !
Mais c'est bien beau tout ça, mais où est-ce qu'elle est notre SDL maintenant ?
En fait, une partie des fichiers a été ajoutée à /usr/lib, une autre à /usr/include :
- /usr/lib contient les “shared libraries”, qui sont des bibliothèques utilisées par les programmes lorsque ces derniers sont exécutés. Concrètement, ça ne nous intéresse pas lorsqu'on est en train de développer le programme mais il faudra penser à les fournir à l'utilisateur final en accompagnement de notre programme. Sous linux elles seront installées sous forme de dépendances, sous Windows elles correspondent aux *.dll qui accompagnent certains programmes.
- /usr/include/SDL contient les “Development libraries” auxquelles on devra faire appel dans notre programme.
Si on jette un coup d'oeil dans /usr/include/SDL, on voit les headers de la SDL qu'on vient d'installer.
Ce sont ces headers qu'on devra inclure dans notre code source avec un « #include <SDL.h> » en début de fichier. D'ailleurs vous pourrez remarquer que le fameux "stdio.h" qu'on inclue dans tous nos fichiers ".c" est aussi dans le dossier /usr/include !
Étape 2 : créer un projet SDL dans Code::Blocks
Contrairement à Windows, tous nos fichiers sont déjà à leur place et Code::Blocks sait où les trouver. Du coup, tout ce qu'on a à faire c'est de créer un nouveau projet. Dans la fenêtre principale de Code::Blocks, allez dans le menu Fichier>Nouveau>Projet.
Dans la fenêtre qui s'ouvre, sélectionnez « SDL project ». S'ouvre alors une nouvelle fenêtre qui vous demande le nom et l'emplacement que vous souhaitez attribuer à ce nouveau projet. Entrez les infos, validez et la fenêtre vous demandera alors des informations sur la compilation : ne vous posez pas trop de questions et validez.
Et voilà ! Code::Blocks vous ouvre un fichier exemple prêt à compiler. L'avantage, c'est qu'on sait d'avance que ce code source fonctionne.
Testons voir si tout marche : dans la fenêtre principale de Code::Blocks, allez dans Build>Build.
Dans mon cas, Code::Blocks n'arrivait pas à trouver le fichier « SDL.h ». En fait, il se trouvait dans /usr/include/SDL/SDL.h mais le fichier main.c indiquait « #include <SDL.h> ». J'ai juste dû transformer cette ligne en « #include <SDL/SDL.h> » et ça suffisait à résoudre le problème.
Ca fonctionne ? Parfait !
Le code source qui a été généré par Code::Blocks est peut-être un peu complexe. Nous le remplacerons par une version simplifiée dans le prochain chapitre.
