Adrien's log

Yet Another Note Pad

Mac OS 10.6, xCode 4 et Irrlicht

by adrien on 13 mars 2011

Irrlicht est un moteur 3D codé en C++ qui à l’avantage d’être simple à utiliser. Seule ombre au tableau, son installation sur Mac OS avec xCode est un peu ardu. Voyons comment faire pour le rendre fonctionnel avec xCode 4 et Mac OS 10.6. Nous passerons par deux phases : la compilation de la bibliothèque et la création du projet dans xCode.

Compilation

Commençons par télécharger Irrlicht : http://irrlicht.sourceforge.net/downloads.html

Ensuite, extrayez le dossier du .zip et déplacé le dans votre dossier de travail. Personnellement, j’ai renommé le dossier d’Irrlicht en suprimant le numéro de version.
Dossier d'Irrlicht

Aller ensuite dans source/irrlicht/MacOSX et ouvrez le fichier de projet xCode. Cliquez sur le projet dans l’arborescence de gauche (icône bleu) puis sélectionnez le SDK de Mac OS 10.6 au lieu du 10.4. Ensuite, dans la barre supérieur, dans le menu déroulant, choisissez libIrrlicht.a. Cela évitera de perdre du temps à compiler toutes les démonstrations livrée avec le moteur.
Modification option de compilation d'Irrlicht

Une fois terminé, récupérez la lib dans ./build/debug et copiez là dans le dossier lib/MacOSX d’Irrlicht

Création du projet

Démarrez un nouveau projet vide sous xCode et ajoutez-y une cible en Cocoa.
Nouveau Projet

Dans le gestionnaire de projet, sélectionnez la cible et ajoutez les frameworks OpenGL, IOKiy et Carbon.
Selection des frameworks

Enfin, dans l’onglet « build settings », mettez l’architecture à intel 32 bits et choisissez GCC en compilateur.

Dernièrement, ajoutez un dans « Search Path » le chemin vers le dossier include d’Irrlicht.
Configuration du projet

Ajoutez la libIrrlicht au projet, et renommez le main.m en main.cpp et ajoutez enfin le code suivant pour tester si le système compile :

 

#include <irrlicht.h>
 
using namespace irr;
using namespace core;
using namespace video;
 
int main()
{
    IrrlichtDevice* device = createDevice(EDT_OPENGL,
                            dimension2d(800,600), 32,
                            false, true, false, 0);
    device->drop();
    return 0;
}

 
Code du projet

Et voila, la méthode est un peu tordu mais enfin bon …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *