Aller au menu - Aller au contenu

Installation de la SDL


Informations sur le tutoriel

Avatar
Auteur : M@teo21
Difficulté : Facile
Visualisations : 49 901 936
Licence : Creative Commons BY-NC-SA


Plus d'informations Plus d'informations

Historique des mises à jour

  • Le 06/03/2010 à 01:19:01
    Ticket #1742 (mauvais prototype pour fputs)
  • Le 02/02/2010 à 12:11:56
    Ajoute le temps d'étude estimé
  • Le 01/02/2010 à 21:30:54
    Correction, ticket n°1558
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 :)
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. Le fichier doit avoir l'extension *.dmg. Montez (chargez) ce fichier *.dmg, prenez le dossier *.framework (par ex: 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

Un dossier *.framework est un dossier contenant tout les fichiers nécessaires, comme les binaires de la SDL et les headers.

Vous obtenez donc ceci :

Image utilisateur
Les frameworks dans leur dossier : vous pouvez voir notamment SDL.framework.

Allez dans l'archive de la SDL (SDL-1.2.11.dmg), allez dans le dossier devel-lite et prenez les fichiers SDLMain.m et SDLMain.h : placez-les en lieu sûr.


Avec Mac OS X



Si vous avez Mac OS X, il faudra en plus récupérer le fichier SDL-1.2.12-extras.dmg sur le site de la SDL. Vous trouverez à l'intérieur 2 dossiers, TemplatesForProjectBuilder et TemplatesForXcode, à copier dans
Macintosh HD/Developer/Library/Xcode/Project Templates/ (for system-wide).
L'assistant de création de nouveau projet de Xcode vous proposera alors de créer une SDL Application :

xCode SDL


Et voilà votre projet est créé :)

Avec Mac OS (version plus ancienne)



Ouvrez le logiciel XCode, créez un nouveau projet (Standard Tool, catégorie Command Line Utility). Placez une copie des deux fichiers SDLMain.m et SDLMain.h dans le dossier de votre projet; ajoutez ensuite ces fichiers au projet dans XCode.
Attention, ces deux fichiers sont essentiels à la SDL. Si vous les oubliez, votre projet ne marchera pas.

Les deux fichiers dans le dossier de votre projet.
Les deux fichiers une fois ajoutés dans XCode.
Image utilisateur
Image utilisateur


Maintenant, faites un clic droit (<ctrl> + clic) sur votre projet (l'élément surligné du menu, sur la photo de droite), allez dans Add, puis cliquez sur Existing Frameworks ...
Là, vous tombez (normalement) sur le dossier dans lequel vous avez mis les *.framework. Sélectionnez les bibliothèques dont vous avez besoin (donc au moins SDL.framework) et validez (Add). Une boite de dialogue apparaît, cliquez bêtement sur Add.

Image utilisateur
Sélectionnez les bibliothèques dont vous avez besoin.

Image utilisateur
Cliquez sur Add.

Image utilisateur
Voilà ce que vous devez obtenir ! ;)
Ici, j'ai inclus les bibliothèques SDL et SDL_image (une autre bibliothèque dont on parlera plus tard).


Voilà, votre projet est prêt, tapez votre code dans le fichier, puis appuyez sur Build & Run : admirez le résultat ! :)
Dans votre code, vous ferez ainsi pour inclure les bibliothèques :Code : C
1
2
#include <SDL/SDL.h>
/* Comme vous pouvez le constater, le nom du dossier d'inclusion correspond au nom du *.framework !!*/



Et sous Linux ?



Si vous compilez sous Linux avec un IDE, il faudra modifier les propriétés du projet (la manipulation sera quasiment la même). Si vous utilisez Code::Blocks, qui existe aussi en version Linux, vous pouvez suivre la même procédure que celle que j'ai décrite plus haut !

Et pour ceux qui compilent à la main ?


Il y en a peut-être parmi vous qui ont pris l'habitude de compiler à la main sous Linux à l'aide d'un Makefile (fichier commandant la compilation).
Si c'est votre cas, voici un Makefile que vous pouvez utiliser pour compiler des projets SDL

La seule chose particulière c'est l'ajout de la bibliothèque SDL pour le linker (LDFLAGS).
Il faudra que vous ayez téléchargé la SDL version Linux et que vous l'ayez installée dans le dossier de votre compilateur, de la même manière qu'on le fait sous Windows (dossiers include\SDL et lib)

Ensuite, vous pourrez taper dans la console :

Code : Console
make          #Pour compiler le projet
make clean    #Pour effacer les fichiers de compilation (les .o inutiles)
make mrproper #Pour tout supprimer sauf les fichiers source

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 tous seuls :)


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 tous seuls dans l'étude d'une de ces bibliothèques ;)
Chapitre précédent Sommaire Chapitre suivant

Informations sur le tutoriel

Retour en haut Retour en haut

Créé : Le 29/07/2005 à 00:29:36
Modifié : Le 23/07/2009 à 18:52:18
Avancement : 100%

157 commentaires