Membres inscrits :668
Membres en ligne : 0
Invités en ligne : 7


|
| Conversation (Résolue) : Cohabitation des versions mono/multi-lib, shared/static... |
hx (Membre)
Inscrit le : 21-09-2010
Messages: 35
Snippets: 0
Tutoriels: 0
Hors ligne |
Salut,
Après avoir écrit et bidouillé avec un court programme, je me suis aperçu de la taille du fichier que je devais transmettre pour déployer cette appli. J'avais compilé wx en monolitique/shared/realease ainsi
Code:mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release
Du coup j'ai voulu faire un essais en multi-lib, je m'attendais a conserver ma big dll monolytique, comme avec le debug,(RELEASE et DEBUG cohabite sans problème (heureusement)) mais le clean suivant a viré ma monolithique
Code:mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD=release clean
il semble donc impossible de conserver dans le même répertoire "gcc_dll" les 4 versions possibles de WX:
MONOLITHIC SHARED 1) 0 0 2) 0 1 3) 1 0 4) 1 1
Donc pour pouvoir choisir a la création de l'appli, sous code:blocks si c'est linké dynamiquement ou statiquement, si on utilise en multi/min lib comment faites vous ?
Il existe bien une option c'est d'avoir 4 répertoires racine c:\wxWidget2.8.11 avec chacun leur répertoire "gcc_dll" indépendant. Je ne trouve pas ca super classe, il doit bien y avoir autre chose de plus clean non ?
Merci d'avance
Hx
| |
|
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne |
salut, d'où l'intérêt d'installer les libs et d'utiliser wx-config, après je n'utilise pas codeblock pour ma part donc je ne sais pas trop s'il est capable de l'utiliser.
Donc tu as en installant comme il faut par exemple: /mingw/lib/libwx_mswu-2.9.a /mingw/lib/libwx_mswud-2.9.a /mingw/lib/libwx_mswu-2.9.dll.a /mingw/lib/libwx_mswud-2.9.dll.a /mingw/lib/wx/config/msw-unicode-2.9 /mingw/lib/wx/config/msw-unicode-static-2.9 /mingw/lib/wx/config/msw-unicode-debug-2.9 /mingw/lib/wx/config/msw-unicode-debug-static-2.9 /mingw/lib/wx/include/msw-unicode-2.9/wx/setup.h /mingw/lib/wx/include/msw-unicode-2.9/wx/msw/rcdefs.h /mingw/lib/wx/include/msw-unicode-static-2.9/wx/setup.h /mingw/lib/wx/include/msw-unicode-static-2.9/wx/msw/rcdefs.h /mingw/lib/wx/include/msw-unicode-debug-2.9/wx/setup.h /mingw/lib/wx/include/msw-unicode-debug-2.9/wx/msw/rcdefs.h /mingw/lib/wx/include/msw-unicode-debug-static-2.9/wx/setup.h /mingw/lib/wx/include/msw-unicode-debug-static-2.9/wx/msw/rcdefs.h /mingw/include/wx-2.9/wx/...
et tu installes wx-config dans /bin
ainsi il ne te reste plus qu'a utiliser wx-config qd tu veux compiler par exemple : wx-config --lists : te donne la liste des configs possibles ainsi que la config par défaut wx-config --help : te donne l'aide
pour compiler en static debug par exemple: wx-config --debug=yes --unicode=yes --static=yes --cxxflags wx-config --debug=yes --unicode=yes --static=yes --libs
donc par exemple dans un makefile ca ferait: CXXFLAGS = `wx-config --debug=yes --unicode=yes --static=yes --cxxflags` -Wall LIBS = `wx-config --debug=yes --unicode=yes --static=yes --libs`
alors qd on fait un makefile -f makefile.gcc on a pas le wx-config je crois, mais il est dispo quelquepart sur le wiki de wxwidgets il me semble, je regarderai si je le retrouve, C'est plus facile à mettre en place en utilisant la compile via le configure puisqu'un "make install" installe tout comme il faut, mais c'est vraiment très pratique sinon, tu peux créer d'autres config après, en monolitic ou pas etc..., j'ai jamais essayé mais tu peux spécifier le fichier de config désiré si tu le souhaites, on peut meme choisir sa version et faire cohabiter 2.8 et 2.9 etc..., Sem
Dernière modification par Sem (23-09-2010 12:14:03)
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Salut.
Il est vrai que faire cohabiter les libs monolithiques et multi-libs peut poser problème.
Il y a quand même une solution : - Tu compiles la version que tu utiliseras le moins (admettons, pour l'exemple, qu'il s'agit de la version monolithique) - Tu renommes le dossier contenant les libs (gcc_dll devient par exemple gcc_mono_dll) - Tu compiles la version que tu utiliseras le plus (dans notre cas, la version multi-libs) - Tu utilises tes libs normalement sous Code::Blocks (donc, avec le dossier gcc_dll contenant la version multi-libs) - Tu dupliques la configuration "release", tu la nommes "release-mono", et tu modifies les dossiers en conséquence (il y en a un pour le compilateur et un pour l'éditeur de liens). - Il te suffit ensuite de "switcher" entre les configurations pour passer d'une version des libs à l'autre.
Je sais de mémoire qu'il y a une autre possibilité (l'utilisation d'une variable "CONFIG" lors de la compilation des libs), mais je ne l'ai jamais utilisée. Faudra que je teste ça un de ces quatres...
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Plop ! C'est encore moi !
Je viens de regarder ça plus en détails, et en fait, c'est tout simple.
Donc, il faut faire comme je te l'ai dit au post précédent, mais tu peux carrément renommer le dossier de libs pour toutes les versions : Par exemple, pour la version dll monolithique, les libs seront dans le dossier "WX_INSTALL_DIR\lib\gcc_dllmono" au lieu de "WX_INSTALL_DIR\lib\gcc_dll" par défaut. Pour la version multi-libs, elles seront dans le dossier "WX_INSTALL_DIR\lib\gcc_dllmulti" au lieu de "WX_INSTALL_DIR\lib\gcc_dll" par défaut.
Lorsque tu crées ton projet sous Code::Blocks, avec l'assistant, tu peux spécifier une configuration (ça doit être à l'avant-dernière étape de l'assistant). Généralement, ce champ reste vide, mais dans notre cas, il faut mettre "mono" ou "multi", et les chemins seront corrects dès le départ.
Ensuite, pour pouvoir utiliser la deuxième version au sein du même projet, tu passe par l'assistant "Nouvelle cible de génération", et tu répètes l'opération avec l'autre configuration.
C'est à mon avis le moyen le plus simple pour résoudre les conflits entre les versions Monolithiques et Multi-libs
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
hx (Membre)
Inscrit le : 21-09-2010
Messages: 35
Snippets: 0
Tutoriels: 0
Hors ligne |
Salut, Excellent ! ca réponds bien à ma question. Je m'en va faire quelques essais et comparaison de poids Merci beaucoup Hx
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Il reste cependant un petit problème pour les libs dynamiques : les deux versions (monolithique et multi-libs) possèdent toutes les deux une dll supplémentaire pour OpenGL, et dans les deux cas, elle porte le même nom.
Donc, si vous faites comme moi, c'est à dire que vous placez toutes les dll dans un seul et même dossier, une des deux versions sera écrasée
Il faut bien faire attention si on l'utilise, car elle est dépendante du reste des libs.
Sinon, pour le reste, y'a pas de soucis.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
|