Author Topic: [Moteur 3D] Compiler CEGUI avec codeblocks et Mingw sous windows pour Ogre  (Read 9585 times)

Offline Yllewen

  • Modérateur
  • Brasseur d'Ô
  • *****
  • Posts: 447
  • Nourrice de Moën
    • View Profile
J'ai suivi ce tutorial pour installer CEGUI mais il manque quelques précisions pour codeblocks (la majorité des infos étant pour VC).
(versions Ogre 1.7 et CEGUI 0.7.1)
Je précise que les versions précompilées de Ogre 1.7.0 et de CEGUI 0.7.1 ne sont pas compatibles, et c'est pour çà que j'ai choisi de compiler CEGUI depuis la source.

1) Downloader CEGUI
http://crayzedsgui.svn.sourceforge.net/viewvc/crayzedsgui/cegui_mk2/branches/v0-7.tar.gz?view=tar
http://sourceforge.net/projects/crayzedsgui/files/CEGUI%20Mk-2/0.7.1/CEGUI-0.7.1.zip/download
2) Downloader les dépendances Mingw
 http://sourceforge.net/projects/crayzedsgui/files/CEGUI%20Mk-2%20MinGW%20Dependencies/CEGUI-DEPS-0.7.x-r1-mingw.zip/download
3) Extraire CEGUI au même niveau que le répertoire d'Ogre
4) Extraire les dépendances dans le répertoire de CEGUI
5) Extraire le premake custo dans projects/premake (téléchargé ici
https://sourceforge.net/projects/crayzedsgui/files/CEGUI%20Mk-2/premake/premake-3.7-custom.zip/download)
6) Configurer le config.lua comme expliqué dans le tuto d'ogre sans oublier le extra path
7) Lancer une commande ms dos et lancer la commande suivante :
Code: [Select]
D:\CEGUI\projects\premake>premake.exe --cc gcc -os windows --target cb-gcc --file cegui.luaCe qui aura pour effet de créer le fichier .workspace nécessaire à la compilation de CEGUI avec codeblocks.
8) Ouvrir le fichier et compiler CEGUIBase en Debug et en Release
9) Compiler CEGUIFalagardWRBase en Debug et en Release
10) Installer ExpatParser (télécharger ici http://sourceforge.net/projects/expat/)
11) ajouter dans les options du projet CEGUIExpatParser les répertoire d'include de lib en haut : C:\Program Files\Expat 2.0.1\Bin  et compiler
12) Ajouter dans les options du projet CEGUIOgreRenderer les répertoire d'include  : ..\..\..\..\..\Ogre\boost_1_42
13) Ajouter dans les options du projet CEGUIOgreRenderer les répertoire de lib  : ..\..\..\..\..\Ogre\lib\(debug ou release)
14) Compiler CEGUIOgreRenderer

Youplaboom !  :glouglou:
« Last Edit: Sat 26 Feb 2011, 10:14:48 by Iliria »

Offline Snaky

  • Rampant
  • **
  • Posts: 5
    • View Profile
Bonjour,

J'ai suivi le tutorial d'ogre3d.org, puis le votre, pour installer CEGUI, mais à chaque fois j'ai eu une erreur à la compilation.

Quote
Linking dynamic library: ..\..\..\bin\CEGUIBase_d.dll
obj\Debug\cegui\src\CEGUIMinizipResourceProvider.o:D:/****/****/OgreSDK_mingw_v1-7-2/cegui/cegui/src/CEGUIMinizipResourceProvider.cpp:74: undefined reference to `_imp__PathMatchSpecA@8'

Je suis donc allé à la ligne concernée, pour voir d'où venait le problème...
Quote
return !FNMATCH(pattern.c_str(), name.c_str());
La méthode fnmatch est définie dans fnmatch.h, mais je n'ai pas ce fichier, du coup il croit qu'elle n'est pas définie.
Il devrait pourtant être quelque part, si le tuto est fait pour windows.
Du coup je reste bloqué à l'étape 8).

J'ai bien essayé de prendre le fichier sur internet, mais je n'ai pas réussi à le faire détecter à la compil...

Help...

Offline Yllewen

  • Modérateur
  • Brasseur d'Ô
  • *****
  • Posts: 447
  • Nourrice de Moën
    • View Profile
Bonjour Snaky!

Peut-tu me préciser quelles sont les versions de Ogre et de CEGUI que tu veux utiliser? (les mêmes que pour les tutos ou les toutes dernières?)
Pour ma part, je m'apprête à monter en version pour avoir au final, Ogre 1.7.2 et CEGUI 0.7.5. (les toutes dernières donc)
Je pense faire çà demain aprèm et updater mon tuto au passage. La bonne nouvelle c'est qu'on peut utiliser les versions précompilées pour Ogre et CEGUI cette fois(avant c'était incompatible), et donc çà devrait être plus simple.

Courage!
« Last Edit: Fri 25 Feb 2011, 21:17:48 by Iliria »

Offline Yllewen

  • Modérateur
  • Brasseur d'Ô
  • *****
  • Posts: 447
  • Nourrice de Moën
    • View Profile
Montée de version faite! :yes:

Pour Ogre 1.7.2, je suis allée chercher directement la version SDK avec MingW. Il suffit de la décompresser là ou on veut la mettre.
http://www.ogre3d.org/download/sdk
Puis on va sur la fenêtre de commande windows et pour les versions windows XP ou précédentes, on crée la variable OGRE_HOME comme çà :
Quote
set OGRE_HOME="D:\OgreSDK\OgreSDK_vc9_v1-7-1"
Avec le chemin qui va bien pour son ordi...
Pour les version suivantes de windows on fait :
Quote
setx OGRE_HOME D:\OgreSDK\OgreSDK_vc9_v1-7-1

Pour CEGUI 0.7.5, j'ai aussi pris la version SDK, et je l'ai juste décompressée au même niveau qu'Ogre.
http://www.cegui.org.uk/wiki/index.php/Downloads


Ce qui change :

 - Au niveau des répertoires "include" du projet, il faut modifier le nom du répertoire Boost_1_42 pour Boost_1_44.
(Project Build options, onglet Search directories, sous onglet Compiler)

 - Au niveau des répertoires indiquant les libs du projet, il faut changer les chemins vers les libs de CEGUI et mettre :
..\CEGUI\bin.
(Project Build options, onglet Search directories, sous onglet Linker)


A ce moment là plus de problèmes de compilation pour moi, mais un problème à l'exécution (une lib introuvable).
En fait, il faut aussi remettre à jour sa version de MingW! J'ai téléchargé sur le site officiel celle du
 11 Février 2011, et çà roule.
http://www.mingw.org/
« Last Edit: Wed 02 Mar 2011, 22:19:15 by Iliria »

Offline Snaky

  • Rampant
  • **
  • Posts: 5
    • View Profile
Merci de m'avoir répondu :)

Je comptait installer les deux dernières versions, j'ai donc fait comme vous avez dit, mais l'erreur persiste :/

Le site de MinGW est down depuis un moment, j'ai donc mis à jour via l'installer. Cela dit je ne sais pas s'il a vraiment mis à jour...

Cela dit j'ai du nouveau. L'erreur que j'ai est une erreur de linkage. Et le fichier concerné n'est pas fnmatch.h mais shlwapi.h, où est pourtant bien déclaré le "PathMatchSpecA" de l'erreur que j'ai. A vrai dire je ne sais pas trop comment régler ce genre d'erreur (je suis quand même en DUT info hein :x)

Offline Yllewen

  • Modérateur
  • Brasseur d'Ô
  • *****
  • Posts: 447
  • Nourrice de Moën
    • View Profile
Hum, alors si c'est une erreur de link, je vais te donner la liste des librairies que j'utilise : (Project build Options/ Linker settings)
(nécessaires pour toutes les applications de base)
 - OgreMain
 - OIS
(nécessaire si tu veux utiliser le nouveau terrain de Ogre)
 - OgreTerrain
(nécessaire si tu veux utiliser CEGUI comme interface graphique)
 - CEGUIBase
 - CEGUIOgreRenderer

Çà c'est en release, ajoutes _d à la fin pour le debug.

Et la liste des répertoires d'inclusion nécessaires à la compilation : (Project build Options/ Search directories/ Compiler)
(nécessaires pour toutes les applications de base)
 - ..\Ogre\include\OGRE
 - ..\Ogre\include\OIS
(nécessaire si tu utilises une version SDK d'Ogre)
 - ..\Ogre\boost_1_44
(nécessaire si tu veux utiliser CEGUI comme interface graphique)
 - ..\CEGUI\cegui\include

Et ton propre répertoire d'inclusion lié à ton projet.

Et enfin, en plus de ce que je disais plus haut (que j'ai modifié au passage j'avoue :ange:) :
Quote
- Au niveau des répertoires indiquant les libs du projet, il faut changer les chemins vers les libs de CEGUI et mettre :
..\CEGUI\bin.
(Project Build options, onglet Search directories, sous onglet Linker)
Il faut ajouter "..\Ogre\bin\debug" en mode debug ou "..\Ogre\bin\release" en mode release.

Est-ce que tu a bien tout çà de ton côté? Et tu utilises aussi CodeBlocks? (ma version CodeBlocks c'est la 8.02)
Sinon à tout hasard tu peux mettre directX à jour...
« Last Edit: Wed 02 Mar 2011, 22:22:32 by Iliria »

Offline Snaky

  • Rampant
  • **
  • Posts: 5
    • View Profile
C'est encore moi !

Ce que je n'arrive pas à compiler, c'est le workspace généré par le premake avec la commande, pas un projet CEGUI.

J'ai noté une erreur dans le fichier config.lua, au niveau des chemins, que j'ai corrigé.
Je vais vous montrer tout ce que j'ai, comme ça vous pourrez me dire s'il y a un problème.

1)Version Code::Blocks : 10.05

2)
Quote from: config.lua
OGRE_PATHS = { "C:/Users/DUT\ MP/Projet_S4/OgreSDK_mingw_v1-7-2", "include/OGRE", "lib" }
OIS_PATHS = { "C:/Users/DUT\ MP/Projet_S4/OgreSDK_mingw_v1-7-2", "include/OIS", "lib" }
...
CEGUI_EXTRA_PATHS = {
    { "C:/Users/DUT\ MP/Projet_S4/OgreSDK_mingw_v1-7-2/boost_1_44", "", "lib", "CEGUIOgreRenderer" },
}
Je n'ai pas essayé sans échappement cela dit.

3)Settings => Global compiler settings => Search directories :
- Rien en Compiler/Linker
- Toolchain executables pointe vers MinGW

4)CEGUIBase build options => Debug => Search directories
=> Compiler : - \lib\debug
- \CEGUI\cegui\include (CEGUI est dans le répertoire d'ogre)

=> Linker : - \CEGUI\bin
- CEGUI\dependencies\lib\dynamic

Même chose en Release, sauf pour \lib\debug qui devient \lib\release.


Offline Snaky

  • Rampant
  • **
  • Posts: 5
    • View Profile
Bon, là j'ai réellement trouvé la source du problème, et la solution :

Quote
#   define FNMATCH(p, s)    PathMatchSpec(s, p)
#   ifdef _MSC_VER
#       pragma comment(lib, "shlwapi.lib")
#   endif

Je rapelle l'erreur que j'ai :
Quote
référence indéfinie vers « _imp__PathMatchSpecA@8 »
*

Après avoir cherché, il se trouve que _imp__PathMatchSpecA@8 est implémenté dans le fichier shlwapi.lib.
J'ai pu télécharger le fichier, l'inclure dans Linker Settings, et ça marche !

Merci de m'avoir répondu tout de même :)

Offline Syg-Majji

  • Reine
  • Voix de l'Ô
  • *****
  • Posts: 1642
  • Reine vampire hémophile
    • View Profile
    • Silmaris
J'ai eu ce problème une fois... mais je ne l'ai pas corrigé comme ça.
Si seulement je me souvenais ^^

Je pense que je suis reparti d'une installation propre avec toutes les dernières versions. Tu es sous Linux ou Windows ?
"Pour votre santé, essayez de manger très gras, très sucré, très salé, pour votre santé, évitez de vous grignoter entre les repas, pour votre santé, évitez de pratiquer une activité physique régulièrement."

Offline Snaky

  • Rampant
  • **
  • Posts: 5
    • View Profile
Windows (Vista en plus...). Je n'ai pas le choix (question de salle) et j'ai choisi Code::Blocks, donc bon, j'ai un peu eût la vie dure ^^'

Mais maintenant c'est réglé :)

Offline Syg-Majji

  • Reine
  • Voix de l'Ô
  • *****
  • Posts: 1642
  • Reine vampire hémophile
    • View Profile
    • Silmaris
Aller, montée de version Ogre 1.7.1 + CEGUI 0.7.9


Pour rappel le problème survenait quand on essayait de compiler avec code:blocks un projet prévu pour visual studio.

A la lecture de ces indications pour le compilateur on voit qu'il ne passe pas dans la boucle à cause de _MSC_VER / pragma qui ne sont pas interprétés par code:blocks mais uniquement par Visual studio.

Quote
#if defined (__WIN32__) || defined(_WIN32)
#   include <Shlwapi.h>
#   define FNMATCH(p, s)    PathMatchSpec(s, p)
#   ifdef _MSC_VER
#       pragma comment(lib, "shlwapi.lib")
#   endif
#else
#   include <fnmatch.h>
#   define FNMATCH(p, s)    fnmatch(p, s, FNM_PATHNAME)
#endif

Après avoir résolu cette erreur j'en ai eu d'autres donc j'ai continué avec la vidéo suivante :
http://www.youtube.com/watch?v=j8QMTSVlBpo&noredirect=1
On y apprend qu'il faut utiliser DW-2 pour mingw (http://tdm-gcc.tdragon.net/download) pour gcc et g++ / linker
il faut aussi ajouter shlwapi manuellement dans les librairies ainsi que les librairies de boost system.

Compilation réussie.
« Last Edit: Tue 29 Jan 2013, 20:22:28 by Syg-Majji »
"Pour votre santé, essayez de manger très gras, très sucré, très salé, pour votre santé, évitez de vous grignoter entre les repas, pour votre santé, évitez de pratiquer une activité physique régulièrement."