Attention: cette page se réfère à une ancienne version de SFML. Cliquez ici pour passer à la dernière version.

SFML et Xcode (Mac OS X)

Introduction

Ceci est le premier tutoriel que vous devriez lire si vous utilisez SFML avec Xcode -- et de manière plus générale, si vous développez des applications pour Mac OS X. Ce tutoriel vous montrera comment installer SFML, configurer votre EDI et compiler un programme SFML simple. Mais aussi, plus important, comment créer des applications qui soient prêtes à être utilisées "out of the box" pour l'utilisateur final.

Plusieurs liens sont donnés dans ce document. Ils sont là principalement pour les plus curieux d'entre vous ; vous n'avez pas besoin de les consulter pour suivre ce tutoriel.

Les prérequis système

Tout ce dont vous avez besoin pour créer une application SFML est :

Avec les versions récentes de Xcode vous devez aussi installer les Command Line Tools depuis Xcode > Preferences > Downloads > Components.

Si vous avez Xcode 5, vous devez utiliser la nouvelle version des templates.

Les binaires : dylib contre framework

SFML est disponible en deux formats sous Mac OS X. Vous avez les bibliothèques dylib d'un côté, et les bundles framework de l'autre. Tous deux sont fournis en tant que binaires universels, afin qu'ils puissent être utilisés à la fois sur des systèmes Intel 32 ou 64 bits sans que vous ayez à vous en préoccuper.

Dylib signifie "bibliothèque dynamique" ; ce format est similaire aux bibliothèques .so sous Linux. Vous pourrez trouver plus de détails dans ce document. Les frameworks sont fondamentalement similaires aux dylibs, excepté qu'ils peuvent intégrer des ressources externes. Voici la documentation détaillée.

Il y a une seule différence importante entre ces deux types de bibliothèques, à garder en tête lorsque vous développez des applications SFML : si vous compilez SFML vous-même, vous pouvez créer les dylibs en version release et debug. Par contre, les frameworks ne sont disponibles qu'en version release. Ceci ne sera toutefois pas un problème car quand vous distribuerez votre application aux utilisateurs finaux, il est préférable d'utiliser la version release de SFML. C'est pourquoi les binaires pour OS X disponibles sur la page de téléchargement sont uniquement en version release.

Les templates Xcode

SFML est livrée avec deux templates pour Xcode 4 qui vous permettent de créer très rapidement et facilement de nouveaux projets d'applications. Ces templates peuvent créer des projets personnalisés : vous pouvez selectionner les modules dont votre application a besoin, choisir d'utiliser SFML en tant que dylib ou framework, choisir quel compilateur utiliser et choisir entre créer un bundle d'application contenant toutes ses ressources (rendant l'installation de votre application aussi simple qu'un glisser-déposer) ou bien un binaire classique. Voyez plus bas pour plus de détails.

Soyez conscients que ces templates ne sont pas compatibles avec Xcode 3. Si vous utilisez toujours cette version de l'EDI et ne comptez pas le mettre à jour, vous pourrez toujours créer des applications SFML bien entendu, mais nous n'aborderons pas la manière de faire dans ce tutoriel. Veuillez vous rapporter à la documentation d'Apple concernant Xcode 3, et plus particulièrement regarder comment ajouter une bibliothèque à votre projet.

C++ 11

Apple fournit une version personnalisée de clang et libc++ avec Xcode 4, qui supportent une partie du standard C++11 (i.e. les nouvelles fonctionnalités de C++11 ne sont pas encore toutes implémentées). Si vous avez prévu d'utiliser ces nouvelles fonctionnalités, vous devez configurer votre projet pour utiliser clang et libc++. De plus, vous devez faire attention de télécharger la bonne version (plus de détails suivent).

Installer SFML

Tout d'abord, vous devez télécharger le SDK SFML qui se trouve sur la page des téléchargements.

Pour commencer à développer des applications SFML, vous devez installer les composants suivants :

Si vous voulez cibler Mac OS X Leopard (10.5) voud devez télécharger la version "GCC". Gardez à l'esprit que cette version n'est pas compatible avec les fonctionnalités de C++11. Si vous voulez les utiliser, vous devez télécharger la version "Clang". Cette dernière est compatible avec Mountain Lion (10.8) et supérieur.

SFML est fournie avec un script install.sh qui peut installer tous les composants pour vous. Il va faire attention à conserver les éventuelles anciennes version de SFML sur votre système, tout spécialement les frameworks, de sorte que vos applications puissent toujours s'exécuter sans modification. Vous avez seulement à ouvrir un terminal dans le répertoire du SDK téléchargé et lancer ./install.sh. Le script va alors vous demander votre mot de passe et tout installer à la bonne place.

À noter que /Library peut être nommé /Bibliothèque si votre système est en français.

Créer un premier programme SFML

Nous fournissons deux templates pour Xcode. SFML CLT génère un projet pour une application terminal classique alors que SFML App crée un projet pour un bundle d'application. Nous allons utiliser ce dernier ici mais ils fonctionnent relativement similairement.

Tout d'abord, choisissez File > New Project... puis sélectionnez SFML dans la colonne de gauche et double cliquez sur SFML App.

Sélection du template Xcode

Maintenant vous pouvez remplire les champs requis comme dans cette capture d'écran ; puis pressez next.

Formulaire du template Xcode

Votre nouveau projet est maintenant configuré pour créer un bundle d'application ".app".

Quelques mots à propos de la configuration des templates. Si vous choisissez une option incompatible pour C++ Compiler and Standard Library, vous allez rencontrer des erreurs à l'édition des liens. Faites bien attention à suivre cette ligne directrice :

Maintenant que votre projet est prêt, voyons ce qu'il y a à l'intérieur :

Contenu du nouveau projet

Comme vous pouvez le voir, il y a déjà pas mal de fichiers dans le projet. Il y a trois catégories importantes :

  1. En-tête & fichiers sources : le projet vient avec un exemple basique dans main.cpp et une fonction d'utilitaire : std::string resourcePath(void); dans ResourcePath.hpp et ResourcePath.mm. Le but de cette fonction, comme illustré dans l'exemple, est de fournir un moyen pratique d'accéder au répertoire Resources du bundle d'application.
    Notez bien que cette fonction ne marche que sous Mac OS X. Si vous prévoyez de porter votre application sur un autre OS, vous devrez faire une autre implémentation de cette fonction.
  2. Fichiers ressources : les ressources de l'exemple de base sont mises dans ce répertoire et sont automatiquement copiées dans votre bundle d'application lorsque vous le compilez.
    Pour ajouter de nouvelles ressources à votre projet, glissez-les simplement dans ce répertoire et assurez-vous qu'elles font partie de la cible de l'application, i.e. la case sous Target Membership dans la zone utilitaire (cmd+alt+1) doit être cochée.
  3. Produit: c'est votre application. Cliquez simplement sur le bouton Run pour la tester.

Les autres fichier du projet ne sont pas très intéressants pour nous ici. Par contre, notez que les dépendances de SFML de votre projet sont ajoutées à votre bundle d'application, d'une manière similaire que les fichiers de ressources sont copiées, de sorte que l'application puisse s'exécuter directement sur un autre Mac sans aucune installation de SFML ou de ses dépendances.