Aller au menu - Aller au contenu

Icône Installation de la SDL

Mise à jour : 22/01/2012
Difficulté : Facile Facile Creative Commons BY-NC-SA
163 458 visites depuis 7 jours , dont 3 514 sur ce chapitre , classé 2/777
Dans la partie III, fini la théorie : nous allons enfin passer au concret :)
Nous allons étudier une bibliothèque tierce.

Une bibliothèque quoi ? o_O


Il faut savoir qu'il existe 2 sortes de bibliothèques :
  • La bibliothèque standard : c'est la bibliothèque "de base" qui fonctionne sur tous les OS (d'où le mot "standard") et qui permet de faire des choses très basiques comme des printf. Elle a été automatiquement installée lorsque vous avez téléchargé votre IDE.
    Durant la partie I et la partie II, nous avons uniquement utilisé la bibliothèque standard (stdlib.h, stdio.h, string.h, time.h...).

    Nous n'avons pas étudié la bibliothèque standard en entier mais nous en avons vu un assez gros morceau. Si vous voulez tout savoir sur la bibliothèque standard, tapez "C standard library" dans google et vous aurez la liste des prototypes ainsi qu'une brève explication de chacune des fonctions. J'envisage moi aussi de faire une liste (mais en français cette fois :p ). Si un jour je trouve la motivation pour m'en occuper, vous trouverez cette liste en annexe du cours.


  • Les bibliothèques tierces : ce sont des bibliothèques qui ne sont pas installées avec votre IDE. Vous devez les télécharger sur Internet et les installer sur votre ordinateur.
    Contrairement à la bibliothèque standard, qui est relativement simple et qui contient assez peu de fonctions, il existe des milliers de bibliothèques tierces écrites par d'autres programmeurs. Certaines sont bonnes, d'autres moins, certaines sont payantes, d'autres gratuites etc. Le tout est de trouver de préférence des bibliothèques bonnes et gratuites à la fois ;)

Je ne peux pas faire un cours pour toutes les bibliothèques tierces qui existent. Même en y passant toute ma vie 24h/24 je ne pourrais pas :p
J'ai donc fait le choix de vous présenter une bibliothèque écrite en C, et donc utilisable par des programmeurs en langage C tels que vous.

Cette bibliothèque a pour nom la SDL. Pourquoi ai-je choisi cette bibliothèque plutôt qu'une autre ? Que permet-elle de faire ?
Autant de questions auxquelles je vais commencer par répondre :)
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Pourquoi avoir choisi la SDL ?

Choisir une bibliothèque : pas facile !



Comme je vous l'ai dit en introduction, il existe des milliers et des milliers de bibliothèques à télécharger.
Certaines bibliothèques sont simples, d'autres plus complexes. Certaines sont tellement grosses que même tout un cours entier comme celui que vous êtes en train de lire ne suffirait pas !

Faire un choix est donc dur. En plus c'est la première bibliothèque que vous allez apprendre à utiliser (si on ne compte pas la bibliothèque standard), donc il vaut mieux commencer par une bibliothèque simple.

Vous, vous voudriez je pense commencer à voir comment on ouvre des fenêtres, comment on peut créer des jeux etc etc. (enfin si vous aimez la console on peut continuer longtemps si vous voulez... Non ? Ah bon tiens c'est curieux :p )
Quant à moi, non seulement j'ai bien envie de vous montrer comment on peut faire tout ça, mais en plus je veux vous faire pratiquer. En effet, nous avons bien fait quelques TP dans les parties I et II, mais ce n'est pas assez ! C'est en forgeant que l'on devient forgeron, et c'est en programmant que euh... Bref vous m'avez compris :-°

Je suis donc parti pour vous à la recherche d'une bibliothèque à la fois simple et puissante pour que vous puissiez rapidement réaliser vos rêves les plus fous sans avoir envie de vous suicider une fois toutes les 20 minutes ;)


La SDL est un bon choix !



J'ai mis un moment avant de me décider et c'est finalement la SDL que nous allons étudier.
Pourquoi ?

Image utilisateur
  • C'est une bibliothèque écrite en C, elle peut donc être utilisée par des programmeurs en C tels que vous (notez qu'elle pourra aussi être utilisée dans un programme écrit en C++). En revanche, l'inverse n'est pas vrai : les bibliothèques écrites en C++ ne sont pas utilisables dans des programmes en C, donc toutes celles-là on peut déjà les exclure ;)

  • C'est une bibliothèque libre et gratuite : je vous ai dit dès le début que vous n'auriez pas à débourser un sou, je tiendrai mes promesses. Contrairement à ce que l'on pourrait penser, trouver des bibliothèques libres et gratuites n'est pas très difficile, il en existe beaucoup aujourd'hui.

    Qu'est-ce qu'une bibliothèque libre ?

    C'est tout simplement une bibliothèque dont vous pouvez voir le code source.
    En ce qui nous concerne, voir le code source de la SDL ne nous intéressera pas. Toutefois, le fait que la bibliothèque soit libre vous garantit plusieurs choses, notamment sa gratuité et sa pérennité (si le développeur principal arrête de s'en occuper, d'autres personnes pourront la continuer à sa place). La bibliothèque ne risque donc pas de mourir du jour au lendemain :)

  • Vous pouvez réaliser des programmes commerciaux et propriétaires avec. Bon, ok, c'est peut-être un peu trop vouloir anticiper, mais tant qu'à faire autant choisir une bibliothèque gratuite qui vous laisse un maximum de libertés. En effet, il existe 2 types de bibliothèques libres :

    • Les bibliothèques sous license GPL : elles sont gratuites et vous pouvez avoir le code source, mais vous êtes obligés en contrepartie de fournir le code source des programmes que vous réalisez avec.
    • Les bibliothèques sous license LGPL : c'est la même chose grosso modo, sauf que cette fois vous n'êtes pas obligés de fournir le code source de vos programmes. Vous pouvez donc réaliser des programmes propriétaires avec.

      Les premiers temps toutefois, je vous conseille de montrer la source de vos programmes pour avoir des conseils de programmeurs plus expérimentés que vous. Cela vous permettra de vous améliorer.
      Après, c'est vous qui choisirez de faire des programmes libres ou propriétaires, c'est surtout une question de mentalité. Je ne rentrerai pas dans le débat ici pas plus que je ne prendrai position, on peut tirer du bon comme du mauvais dans chacun de ces 2 types de programmes.


  • C'est une bibliothèque multiplateforme. Que vous soyez sous Windows, Mac ou Linux, la SDL fonctionnera chez vous. C'est même d'ailleurs ce qui fait que cette bibliothèque est impressionnante aux yeux des programmeurs : elle fonctionne sur un très grand nombre de systèmes d'exploitation. Il y a Windows, Mac et Linux certes, mais cela peut aussi fonctionner sur Atari, Amiga, Symbian, Dreamcast etc. ;)

  • Enfin, la bibliothèque permet de faire des choses amusantes. Je ne dis pas qu'une bibliothèque mathématique capable de résoudre des équations du quatrième degré n'est pas intéressante, mais je pense quand même que la plupart d'entre vous aimeraient plutôt voir comment on peut créer des jeux vidéo :)


La SDL n'est pas une bibliothèque spécialement faite pour créer des jeux vidéo. Bon ok, la plupart des programmes utilisant la SDL sont des jeux vidéo, mais cela ne veut pas dire que vous êtes forcément obligés d'en faire. A priori, tout est possible avec plus ou moins de travail (je connais des gens qui ont fait un éditeur de texte en SDL par exemple ;) )


Les possibilités offertes par la SDL



La SDL est une bibliothèque bas niveau. Vous vous souvenez de ce que je vous avais dit au tout début du cours à propos des langages haut niveau et bas niveau ? Eh bien ça s'applique aussi aux bibliothèques.

  • Une bibliothèque bas niveau : c'est une bibliothèque disposant de fonctions très basiques. Il y a en général peu de fonctions car on peut tout faire à l'aide de ces fonctions basiques. Comme les fonctions sont basiques, elles sont très rapides. Les programmes réalisés à l'aide d'une telle bibliothèque sont donc en général ce qui se fait de plus rapide (sauf si vous codez avec les pieds bien sûr :p )
  • Une bibliothèque haut niveau : elle possède en général beaucoup de fonctions capables de faire de nombreuses choses différentes. Cela la rend plus simple d'utilisation.
    Toutefois, une bibliothèque de ce genre est généralement "grosse", donc plus difficile à étudier et à connaître entièrement. En outre, elle est souvent plus lente qu'une bibliothèque bas niveau (bien que parfois ça ne soit pas vraiment visible).

Bien entendu, il faut nuancer. On ne peut pas dire "une bibliothèque bas niveau c'est mal" ou "une bibliothèque haut niveau c'est mal". Il y a des avantages et des défauts à chacun des 2 types, et la SDL fait partie des bibliothèques bas niveau c'est tout.

Il faut donc retenir que la SDL ne propose que des fonctions basiques. Vous avez par exemple la possibilité de dessiner pixel par pixel, de dessiner des rectangles ou encore d'afficher des images. C'est tout, et c'est suffisant.

  • En faisant bouger une image, vous pouvez faire déplacer un personnage.
  • En affichant plusieurs images d'affilée, vous pouvez créer une animation.
  • En combinant plusieurs images côte à côte, vous pouvez créer un véritable jeu.


Pour vous donner une idée de jeu codable en SDL, sachez que le jeu "Civilization : Call to power" a été adapté pour Linux à l'aide de la bibliothèque SDL.
Voici quelques captures d'écran :

Image utilisateur Image utilisateur Image utilisateur


Ce qu'il faut bien comprendre, c'est qu'en fait tout dépend de vous. Vous pouvez faire des jeux encore plus beaux en créant de plus beaux graphismes, ou en faire des plus moches en utilisant des graphismes plus moches :p
Cela devrait quand même je pense vous donner une petite idée.

La seule limite de la SDL, c'est la 2D. Elle n'est pas conçue pour la 3D (qui est de toute manière plus complexe, nous l'étudierons plus tard).
Voici une liste de jeux parfaitement codables en SDL (ce n'est qu'une petite liste, tout est possible à priori tant que ça reste de la 2D) :

  • Casse-briques
  • Bomberman
  • Tetris
  • Jeu de plateforme : Super Mario Bros, Sonic, Rayman...
  • RPG 2D : Zelda, les premiers Final Fantasy etc...

Il m'est impossible de faire une liste complète, la seule limite ici étant l'imagination :p
Bien entendu, y arriver demandera parfois beaucoup de travail, parfois énormément de travail. Mais ça reste possible.

Allez, on arrête de rêver et on redescend sur Terre : je ne fais que vous parler de la SDL depuis tout à l'heure, mais on ne l'a toujours pas installée ! :lol:

Téléchargement de la SDL

Voici un nouveau site à mettre en favori :



Là-bas, vous trouverez tout ce dont vous avez besoin, en particulier la bibliothèque elle-même ainsi que sa documentation :)

Voici à quoi ressemble le site de la SDL. Repérez bien les menus à gauche, c'est là que tout se passe :

Image utilisateur


Image utilisateur


Rendez-vous dans le menu à gauche, section "Download".
Téléchargez la version de la SDL la plus récente que vous voyez (SDL 1.2 au moment où j'écris ces lignes).

La page de téléchargement est séparée en plusieurs parties :

  • Source code : vous pouvez télécharger le code source de la SDL. Comme je vous l'ai dit, le code source ne nous intéresse pas. Je sais que vous êtes curieux et que vous voudriez savoir comment c'est fait mais actuellement ça ne vous apportera rien. Pire, ça vous embrouillera et c'est pas le but ;)
  • Runtime libraries : ce sont les fichiers que vous aurez besoin de distribuer en même temps que votre exécutable lorsque vous donnerez votre programme à d'autres personnes. Sous Windows, il s'agit tout simplement d'un fichier SDL.dll. Celui-ci devra se trouver :
    • Soit dans le même dossier que l'exécutable (ce que je recommande)
    • Soit dans le dossier c:\Windows

    L'idéal est de toujours donner la DLL avec votre exécutable et de la laisser dans le même dossier. Si vous mettez la DLL dans le dossier de Windows, vous n'aurez plus besoin de mettre une DLL dans chaque dossier contenant un programme SDL. Toutefois, cela peut poser des problèmes de conflits de version si vous écrasez une DLL plus récente.
  • Development libraries : ce sont les fichiers .a (ou .lib sous visual) et .h vous permettant de créer des programmes SDL. Ces fichiers ne sont nécessaires que pour vous, le programmeur. Vous n'aurez donc pas à les distribuer avec votre programme une fois qu'il sera fini.
    Si vous êtes sous Windows, on vous propose 3 versions dépendant de votre compilateur :

    • VC6 : pour ceux qui utilisent Visual Studio payant dans une vieille version (donc normalement ça ne vous intéresse pas). Vous trouverez des fichiers .lib à l'intérieur.
    • VC8 : pour ceux qui utilisent Visual Studio 2005 Express avec le service pack 1 (une mise à jour) d'installé. Vous trouverez des fichiers .lib à l'intérieur.
    • mingw32 : pour ceux qui utilisent Code::Blocks (il y aura donc des fichiers .a)


La particularité, c'est que les "Development libraries" contiennent tout ce qu'il faut : les .h et .a (ou .lib) bien sûr, mais aussi la SDL.dll à distribuer avec votre application ainsi que la documentation de la SDL !
Bref, tout ce que vous avez à faire est de télécharger les "Development libraries". Tout ce dont vous avez besoin se trouve à l'intérieur :)


Ne vous trompez pas de lien ! Prenez bien la SDL dans la section "Development libraries" (plus bas sur la page) et non le code source de la section "Source code" !


Qu'est-ce que la documentation ?


Une documentation, c'est la liste complète des fonctions d'une bibliothèque. Toutes les documentations sont écrites en anglais (oui même les bibliothèques écrites par des français ont leur documentation en anglais). Voilà une raison de plus de bien vous entraîner en anglais !

La documentation n'est pas un tutorial, elle est en général assez austère. L'avantage par rapport à un tutorial, c'est qu'elle est complète. Elle contient la liste de TOUTES les fonctions, c'est donc LA référence du programmeur.
Bien souvent, vous rencontrerez des bibliothèques pour lesquelles il n'y a pas de tutorial. Vous aurez uniquement la doc' comme on l'appelle, et vous serez capables de vous débrouiller avec seulement ça (même si parfois c'est un peu dur de démarrer sans aide :-° ). Un vrai bon programmeur peut donc découvrir le fonctionnement d'une bibliothèque uniquement en lisant sa doc.

A priori, vous n'aurez pas besoin de la doc de la SDL de suite car je vais moi-même vous expliquer comment elle fonctionne. Toutefois, c'est comme pour la bibliothèque standard : je ne pourrai pas vous parler de toutes les fonctions. Vous aurez donc certainement besoin de lire la doc plus tard.

La documentation se trouve déjà dans le package "Development libraries", mais si vous le voulez vous pouvez la télécharger à part en vous rendant dans le menu "Documentation" / "Downloadable".
Je vous recommande de mettre les fichiers HTML de la documentation dans un dossier spécial (par exemple "Doc SDL") et de faire un raccourci dans le menu Démarrer vers le fichier index.html. Le but est que vous puissiez accéder rapidement à la documentation lorsque vous en avez besoin ;)

Créer un projet SDL

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 :p

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 dézippé
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.

Assistant SDL


Vient ensuite la partie où vous devez indiquer où se trouve installée la SDL :

Assistant SDL


Cliquez sur le bouton "..." à droite. Une nouvelle fenêtre un peu complexe s'ouvre :

Image utilisateur


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 :

Image utilisateur


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 ! :)

Si on vous dit "Cette application n'a pas pu démarrer car SDL.dll est introuvable", c'est que vous n'avez pas copié le fichier SDL.dll dans le dossier de votre projet !
Il faudra penser à fournir cette .dll en plus de votre .exe à vos amis si vous voulez qu'ils puissent exécuter le programme eux aussi. En revanche, vous n'avez pas besoin de leur filer les .h, .a et tout le tintouin ;)


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
1
2
3
4
5
6
7
8
9
#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" :

Image utilisateur


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é :

Image utilisateur


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".

Image utilisateur


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
1
2
3
4
5
6
7
8
9
#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).


Image utilisateur


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 :

Image utilisateur
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 :

Image utilisateur


L'assistant de création de nouveau projet de Xcode vous proposera alors de créer une SDL Application :

Image utilisateur


Et voilà votre projet est créé. :)

Et sous Linux ?



Cette section a été rédigée par GeeZ.


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
aptitude search libsdl

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. :)
A la fin de ce chapitre, vous devriez donc avoir téléchargé et installé la SDL dans le répertoire de votre compilateur.
Vous devez être capables de créer un projet SDL configuré comme il faut avec votre IDE favori les yeux fermés ;) L'idéal serait même que vous soyez capables de le faire pour les 3 IDE présentés ici.

Dans le prochain chapitre nous ferons nos premiers pas en SDL, avec en particulier l'ouverture d'une fenêtre ! Ca fait longtemps que vous attendez ça hein ? :p


D'autres bibliothèques ?



Nous allons donc dès le chapitre suivant commencer à étudier ensemble la SDL et découvrir comment elle fonctionne.

Toutefois, peut-être qu'il y en a parmi vous qui ne veulent pas apprendre la SDL (bon ça ça serait dommage) ou qui aimeraient aussi connaître d'autres bibliothèques. Ce que je vous conseillerais ce serait dans tous les cas de travailler la SDL avec moi, ça vous fera de la pratique et vous aurez au moins acquis de l'expérience sur une bibliothèque. Après, si vous le voulez, vous pourrez essayer d'apprendre par vous-mêmes une autre bibliothèque écrite en langage C.

En effet, sachez qu'à votre niveau vous pouvez théoriquement utiliser n'importe quelle bibliothèque écrite en C, pour peu que vous trouviez des tutoriaux pour vous aider à démarrer ;)

Vous savez que je ne pourrai pas vous expliquer ces bibliothèques (j'ai fait le choix de la SDL), mais je peux au moins vous indiquer le chemin si vous voulez commencer à apprendre tout seul :)


Voici quelques bibliothèques assez connues qui vous intéresseront probablement :

  • GTK+ : c'est une bibliothèque de fenêtres multiplateforme. Elle a été créée au départ uniquement pour le logiciel de dessin The Gimp, puis elle a été étendue et améliorée pour être utilisable par d'autres programmes.
    Contrairement à la SDL qui ne permet pas de créer des boutons et de menus (enfin c'est possible mais il faut les simuler c'est un peu délicat) et qui est plutôt adaptée pour les jeux, GTK+ vous propose tout ça. C'est une bibliothèque sous license LGPL aussi, donc vous êtes libres de distribuer vos programmes comme vous le voulez.

    La particularité de GTK+ est que les fenêtres ont une apparence bien particulière. Voici un screenshot d'une fenêtre GTK+ :

    Image utilisateur
    Une fenêtre GTK+ (merci à KaZu pour le screenshot ;) )


    Vos fenêtres auront donc une apparence différente des fenêtres habituelles de votre OS (enfin sauf pour ceux qui sont sous Gnome sous Linux ;) ). Pour que vos applications faites en GTK+ fonctionnent sur l'ordinateur de vos utilisateurs, il faudra qu'ils installent au préalable un programme appelé le runtime GTK+ (ce qui n'est pas très pratique à mon goût).
    Ceci mis à part, c'est une bonne bibliothèque graphique de création de fenêtres. Si cela vous tente, vous trouverez un bon tutorial sur http://www.gtk-fr.org pour démarrer :)

  • API Win32 : c'est la bibliothèque de création de fenêtres de Windows. Le défaut est que votre programme ne fonctionnera que sous Windows, l'avantage est que... ben en utilisant cette bibliothèque vous pouvez créer de véritables programmes Windows en fenêtres comme ceux que vous avez l'habitude d'utiliser tous les jours (si vous êtes sous Windows). En outre, vous n'aurez aucune DLL à livrer (ou aucun runtime à installer comme c'est le cas pour GTK+) : logique, car ceux-ci sont automatiquement installés avec Windows.

    Vous trouverez un bon tutorial à cette adresse : http://bob.developpez.com/tutapiwin/

    L'API Win32 est écrite en C, mais il faut savoir aussi qu'il existe une bibliothèque appelée la MFC (Microsoft Foundation Classes, donc aussi créée par Microsoft) qui vous permet de programmer en C++.
    Tout dépend du langage que vous souhaitez utiliser. A votre niveau de toute façon c'est sur l'API Win32 qu'il faut vous pencher vu que vous ne connaissez pas le C++. La MFC n'est pas plus puissante que l'API Win32 (je vous avais déjà dit que c'est pas parce que c'est du C++ que c'est mieux ;) ), elle permet juste de créer votre programme d'une manière différente.




Voilà, ce n'est qu'une petite liste (vraiment très petite). Ce sont des suggestions de bibliothèques que vous pouvez apprendre si vous le désirez.
Encore une fois j'insiste : je vous recommande dans un premier temps d'étudier la SDL avec moi, pour vous faire les crocs. Une fois que vous serez bien affamés et que vous aurez dévoré la SDL toute crue, vous serez plus aptes à vous lancer tout seul dans l'étude d'une de ces bibliothèques ;)
Chapitre précédent Sommaire Chapitre suivant

Partager

250 commentaires pour "Installation de la SDL"
Note moyenne : 3.89 / 4 (2861 votes)
Pseudo Commentaire
Hors ligne R@ph # Posté le 01/02/2012 à 10:36:33

Avis : Bon

Bonjour,

Merci pour ce petit tutoriel très bien (ce site est très pédagogue et encourageant, ça fait plaisir !).
Pour installer la SDL sous VS C++ express 2010, il faut prendre la release 1.2.14 pour VC8 (et non pas la dernière proposée en 1.2.15), car les fichiers .lib ne fonctionnent pas, d'où l'erreur de linkage lors de l'édition de lien.

Voici le lien vers la version 1.2.14 VC8 : https://sites.google.com/site/sdlinvc2 [...] ttredirects=0

et un lien vers le tuto qui se propose également de l'installer (d'une manière presque identique) sous VS 2010 : https://sites.google.com/site/sdlinvc2010/installation-1

Ca devrait aider ceux qui ont un peu galérer comme moi ;-)
Hors ligne SnekOx # Posté le 05/02/2012 à 18:37:29
tjs+ loin dans la connaissance
Avatar

Bonjour,
J'ai bien essayé avec les fichiers des liens de toutflou - mais je n'obtiens pas le résultat escompté par guimers8, soit; pas de nouvelles Applications "SDL" dans Xcode.
A savoir que je suis sur X Lion et Xcode 4.2.1. - la SDL 1.2.14 va jusqu'à Snow Leopard.
Que faire ?

SnekOx - :zorro:
 
Hors ligne poeh91 # Posté le 06/02/2012 à 18:56:29

Bonjour à tous,
J'ai suivi le tuto et jarrive à un probleme quand je compile, jai les messages suivant:

-Erreur 1 error LNK2019: symbole externe non résolu _main référencé dans la fonction ___tmainCRTStartup C:\Users\Mickael\Desktop\sdl\sdl\sdl\MSVCRTD.lib(crtexe.obj) sdl
-Erreur 2 error LNK1120: 1 externes non résolus C:\Users\Mickael\Desktop\sdl\sdl\Debug\sdl.exe 1 1 sdl

merci d'avance pour le coup de main...


voici le code de base que j'ai mis:

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

int main(int argc, char *argv[])
{

return 0;
}
Hors ligne Kelias # Posté le 06/02/2012 à 20:10:39
Avatar

Avis : Très bon

Bonsoir, je souhaite utiliser cette bibliotheque dans le cadre d'un projet de programmation C. Dans la consigne il est précisé que le projet doit être en c et pas en c++ , or le projet crée avec sdl est un .cpp, est ce normal ?
Hors ligne SPP_/ROD # Posté le 07/02/2012 à 18:44:16
Avatar

Ne t'en fait pas, c'est juste parce qu'ici, c'est un cours sur le C ;) .Personnellement, je suis plutôt C++ et ça marche pour moi.

Voir tous les commentaires