wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 4
Pub hébergeur
Pourquoi cette pub ?

Valid XHTML 1.0 Transitional

Valid CSS2

Menu Tutoriels (navigation):
Pages: 1    Accueil » Tutoriels » Compilation des libs - Installation - Réglages IDE
» Compiler les libs wxWidgets sous Windows
Détails du Tutoriel : Compiler les libs wxWidgets sous Windows
Informations sur l'auteur de ce tutoriel :


Hors ligne
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1364
Snippets: 25
Tutoriels: 6
Introduction / Description :
Bonjour à tous.

Voici la méthode utilisée pour compiler les libs wxWidgets sous Windows.
Je ne prétends pas qu'il s'agit de la meilleure méthode, mais c'est la mienne, et surtout, le plus important, elle fonctionne.

Les compilateurs abordés dans ce tuto sont :
- MinGW
- Visual C++ 2005 Express Edition
- Visual C++ 2008 Express Edition
Fichier pdf du tutoriel :

  Taille du fichier : 133.44 Ko
Téléchargé / Affiché : 7475 fois.

Afficher le fichier à l'aide du navigateur

Télécharger le fichier pour l'enregister
Explications finales :
Ce tutoriel ne demande qu'à évoluer en fonction de vos expériences, et de vos besoins.

Merci de me signaler les éventuelles lacunes ou erreurs qu'il pourrait contenir.

Bonne compilation, et @+

Xav'

M.à.J. le 05/03/2008 : Prise en compte de la version 2008 de Visual C++ Express Edition
M.à.J. le 09/04/2008 : Corrections + Ajout des options USE_GDIPLUS=1 et wxUSE_GRAPHICS_CONTEXT=1
M.à.J. le 03/07/2008 : Corrections + Ajout de la compilation des exemples et contribs
Commentaires
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1364
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Bonjour à tous.
Je poste juste un petit mot pour vous informer d'un petit problème :
Si vous utilisez le copier/coller depuis le fichier pdf vers la fenêtre "ligne de commande" de windows, il se peut que vous obteniez un message d'erreur du style :

Code:

NMAKE : fatal error U1073: incapable d'obtenir '-f'

Ne cherchez pas l'erreur dans la commande elle-même, il n'y en a pas.
Apparemment, le caractère "-" qui précède le "f" n'est pas collé correctement.
Pour y remédier, il suffit, après avoir collé la ligne de commande, de revenir sur ce caractère, de l'effacer et de le retaper, et tout devrait rentrer dans l'ordre.

Merci à C.Panel de l'avoir signalé.
Bonne continuation, et @+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
Krissou (Membre)
Inscrit le : 08-12-2008
Messages: 17
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour Xaviou, merci pour ce tuto!
Debutant en wxWidgets, il y a quelques passages qui ne sont pas clairs pour moi et qu'il faudrait peut être préciser pour les newbee comme moi :)

1) Si le setup.h indique les libs que l'on souhaite compiler, pourquoi faut-il les remettre ensuite en option lors de l'appel du compilateur?
->Exemple concret:si j'active l'UNICODE dans le setup.h mais que dans la ligne de commande pour compiler je mets "UNICODE=0"  ... que va-t-il se passer?
->De meme si on met "wxUSE_GLCANVAS 1" dans setup.h et si "USE_OPENGL=0" dans la commande de compilation.

2)Dans la partie "compiler les libs" du tuto, tu indiques "BUILD = Release (ou Debug, mais je doute que vous vouliez débugger les libs wxWidgets)."
Je suis completement perdu avec cette phrase: ca veux dire qu'on peut compiler un projet utilisant les wxWidgets en mode debug alors que ces wxWidgets ont ete compiles uniquement en mode release?

Pour moi l'option "BUILD=debug" est indispensable non pas uniquement pour "débugger les libs wxWidgets" mais surtout pour pouvoir ensuite compiler ses logiciels en mode debug. Je me trompe? Si oui merci de m'indiquer comment compiler un soft en Debug avec les wxWidgets compiles uniquement en Release.

Au passage l'option de compilation "BUILD=Debug" ne fonctionne pas chez moi: il faut une minuscule a debug -> "BUILD=debug"

Merci pour ces éclaircissements!
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1364
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut, et bienvenue sur wxDev.fr

Le fichier "setup.h" donne les options par défaut, mais certaines d'entre-elles (pour ne pas dire la quasi-totalité) peuvent être modifiées par la ligne de commande lors de la compilation.
SI je reprend ton exemple : en activant Unicode dans le setup.h, et en le désactivant dans la ligne de commande, tu obtiendras des libs Ansi.
Si tu ne spécifies rien dans la ligne de commande, c'est la valeur par défaut (celle présente dans le setup.h) qui sera utilisée.

D'ailleurs, si tu regardes comment c'est fait dans le fichier setup.h, tu verras que la valeur qui y est inscrite n'est prise en compte que si la constante n'est pas encore définie. Or, quand tu le mets dans la ligne de commande lors de la compilation, "make" la définit.
L'avantage de ne la mettre que dans le fichier setup.h c'est que tu n'auras pas à rajouter cette option lors de la création d'un projet, mais l'inconvénient, c'est que tu ne pourras pas décider de sa valeur.

Pour la partie "Debug" ou "Release", il est tout à fait possible de déboguer un programme utilisant wxWidgets même si les libs n'on pas été compilées en mode debug.
Le fait de compiler les libs en mode debug va te permettre de bénéficier de fonctions et macros propres au débogage.
Prenons un exemple tout bête : je ne sais pas sous quel OS tu codes, mais imaginons que c'est sous Windows, et que tu veuilles déboguer un petit logiciel qui n'utilise que l'API Win32 : vas-tu installer une version debug de l'API ? J'en doute fort. Pourtant, tu pourras sans problème faire des breakpoints et visualiser le contenu de tes variables quand même.
Pour compiler un soft en mode debug, tu fais comme tu le ferais normalement avec n'importe quelle autre lib, en prenant bien soin de ne pas définir __wxDEBUG__ et c'est tout.
Par exemple, sous Code::Blocks, tu fais un nouveau projet wxWidgets, en laissant la majorité des options par défaut, et à un moment, il faut cocher l'option "configure advanced option" pour avoir accès à l'option "Use __wxDEBUG__ and debug wxWidgets libs" et la décocher.
D'ailleurs, il est fréquent d'obtenir un message d'alerte de l'assistant de Code::Blocks indiquant qu'il n'a pas trouvé de configuration debug dans le chemin wxWidgets qu'on lui a donné, mais ça n'empêche pas de continuer.

Par contre, pour la majuscule, je n'ai pas vérifié : tu as sans doute raison (je viens juste de regarder ce que j'avais mis pour la compilation des libs disponibles avec l'installateur présent sur ce site, et je n'avais effectivement pas mis la majuscule.
Faudra que je vérifie ça un de ces quatre, et mettre à jour le tuto.

Voilà, j'espère avoir (à peu près clairement) répondu à tes questions.
Si ce n'est pas le cas, n'hésites pas à redemander.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
Krissou (Membre)
Inscrit le : 08-12-2008
Messages: 17
Snippets: 0
Tutoriels: 0
Hors ligne
OK donc ce que je comprends c'est que si un parametre présent a la fois dans le setup.h et dans la ligne de commande, c'est toujours la valeur de la ligne de commande qui prévaut.
Exemple si unicode est activé dans le setup.h mais désactivé en ligne de commande, alors le résultat sera non unicode.
A contrario si l'unicode est désactivé dans le setup.h mais activé dans la ligne de commande, alors dans ce cas le résultat sera bien unicode.

J'ai bon? ;)

Enfin pour l'histoire du debug je suis tout a fait d'accord avec tes explications sauf que chez moi ca marche pas!:) J'ai réessayé en enlevant "__WXDEBUG__" ainsi que "WXDEBUG=1" et en compilant avec des lib en version release mais ça ne passe pas. J'obtiens des erreurs de link du style:
static class wxAppConsole * wxAppConsole::ms_appInstance" (?ms_appInstance@wxAppConsole@@1PAV1@A) already defined in wxbase28u.lib(baselib_appbase.obj)

Peut etre que j'utilise une lib redondante avec wxbase28u.lib? Si oui, je ne sais pas la quelle.
Les lib que j'inclus sont:
wxbase28u.lib
wxbase28u_net.lib
wxbase28u_xml.lib
wxexpat.lib
wxjpeg.lib
wxmsw28u_adv.lib
wxmsw28u_aui.lib
wxmsw28u_core.lib
wxmsw28u_dbgrid.lib
wxmsw28u_gl.lib
wxmsw28u_html.lib
wxmsw28u_media.lib
wxmsw28u_qa.lib
wxmsw28u_richtext.lib
wxmsw28u_xrc.lib
wxpng.lib
wxregexu.lib
wxtiff.lib
wxzlib.lib
comctl32.lib
rpcrt4.lib
gdiplus.lib

Ma liste n'est pas bonne?

En tout cas merci pour cette réponse très complète!
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1364
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Krissou a écrit:
J'ai bon? ;)
Oui, c'est ça

Pour la liste des libs, elle paraît bonne.
Apparement, tu programmes avec Visual C++.
As-tu essayé l'assistant projet de ce site (dans la rubrique outils)?
Il n'est pas très complet au niveau des options disponibles, mais ce qui existe marche à merveille (enfin chez moi :lol: ).

En fait, il utilise les headers précompilés (faudra que j'ajoute l'option pour désactiver éventuellement ça), et surtout, les libs sont automatiquement envoyées au linker grâce au fichier %WXDIR%\include\msvc\wx\setup.h    (encore un setup.h ;) )
Je viens de voir un truc : dans ta configuration debug, il ne faut pas que la constante _DEBUG soit définie, sinon, le fichier ci-dessus appelle automatiquement les libs debug.
Alors si en plus tu ajoutes les libs normales, ça va forcément planter.

Essayes-le et dis-moi ce que ça donne.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
carreau (Nouveau membre)
Inscrit le : 10-12-2008
Messages: 1
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,
j'essaye de compiler les examples de la version 2.8.9 avec VisualStudio 7 Express
Mais il me manque un setup.h dans le répertoire wxDir\include\wx\
Le setup.h que j'ai modifié est bien dans wxDir\include\wx\msw\
Pouvez-vous m'orienter ?
Merci
JC
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1364
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut, et bienvenue.
C'est bizarre, normalement, en ouvrant les fichiers projets des exemples, ça marche.
Assures-toi de sélectionner une configuration de compilation compatible avec ton installation (par exemple, ne prends pas Debug si tu n'as pas installé/compilé les libs Debug).

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
zoonel (Nouveau membre)
Inscrit le : 23-01-2009
Messages: 1
Snippets: 0
Tutoriels: 0
Hors ligne
Merci pour ce tuto
Ça fonctionne bien (pour les quelques samples testés).
Par contre il ne faut pas oublier d'inclure la lib "gdiplus.lib" pour compiler le sample "richtext" par exemple!
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1364
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut, et bienvenue à toi zoonel.

C'est bizarre, car j'ai compilé l'exemple "richtext" avec gcc sans soucis (et donc sans gdiplus qui n'est pas disponible sans bidouillage avec gcc).

Je suppose que tu as compilé tes libs en mode "static" sous visual c++ avec gdiplus : dans ce cas, c'est normal d'avoir à inclure cette lib lors de la compilation des exemples.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
schneed (Nouveau membre)
Inscrit le : 20-11-2013
Messages: 0
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour
Existe-t'il des variantes pour la compilation de la version 3.0 de wxWidgets ?

Merci
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1364
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Bonjour.
schneed a écrit:
Existe-t'il des variantes pour la compilation de la version 3.0 de wxWidgets ?
Je n'ai pas fait le comparatif, mais c'est à peu de choses près la même méthode.

La plus grosse différence réside dans le fait qu'avec la version 3.0, il n'y a plus de distinction Ansi/Unicode (on peut utiliser les deux quelle que soit l'option sélectionnée lors de la compilation).

Après, si tu utilises MinGW, il faut ajouter une option pour les libs "dynamiques" sinon, ça peut planter à la compilation.

Voici une ligne de commande utilisée pour compiler la version 3.0 avec MinGW Gcc-TDM-4.7.1 :

Code:

mingw32-make.exe -f makefile.gcc BUILD=release UNICODE=1 SHARED=1 MONOLITHIC=0  USE_WEBVIEW=1 CXXFLAGS="-fno-keep-inline-dllexport"


Je te laisse adapter à tes besoins.
@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
Menu Tutoriels (navigation):
Pages: 1    Accueil » Tutoriels » Compilation des libs - Installation - Réglages IDE
» Compiler les libs wxWidgets sous Windows