vignette

wxWidgets

vignette

En flag

 

 

wxWidgets 3.2.4

la version 3.2.4 est utilisée ici, mais j'ai procédé de même avec d'autres versions (2.8.12 et 3.0.2) pour tester la compatibilité du code (on a parfois des surprises !).

installer au préalable libgtk-3-dev depuis synaptic.

Création de plusieurs builds à partir d'une version de wxWidgets.
Vous pouvez souhaiter, par exemple, un build static pour Linux, un autre pour la compilation croisée d'une version Windows 32 bits un troisième pour la version 64 bits.
Pour éviter de doux mélanges vous allez créer un répertoire séparé pour chaque build.
On crée,par exemple, les répertoires (en mode root):
/opt/Persowx324_Lin64
/opt/Persowx324_Win32
/opt/Persowx324_Win64
En tapant dans un terminal :
cd /opt
sudo mkdir Persowx324_Lin64
sudo mkdir Persowx324_Win32
sudo mkdir Persowx324_Win64

Télécharger la (ou les) version choisie de wxWidgets : wxWidgets-3.2.4.tar.bz2 pour la version 3.2.4
La décompresser par exemple dans ~/chezmoi/wxWin
Après décompression vous avez un répertoire ~/chezmoi/wxWin/wxWidgets-3.2.4
Créez dedans un sous répertoire de travail :ex ~/chezmoi/wxWin/wxWidgets-3.2.4/wxPersoBuild
En mode console se placer dans le répertoire de travail (cd ~/chezmoi/wxWin/wxWidgets-3.2.4/wxPersoBuild)

Tout est prêt pour passer aux choses sérieuses.

Le script "configure" va vérifier que rien de manque et peaufiner les directives de compilation.
La consigne "--prefix" indique dans quel répertoire le résultat de la compilation sera placé.
"--enable-static --disable-shared" produisent une version de wxWidgets qui permettra d'obtenir des exécutables sans dépendances (ils seront par contre plus gros).
En mode console :
../configure --prefix=/opt/Persowx324_Lin64 --enable-optimise --enable-stl --enable-unicode --enable-threads --disable-shared --enable-graphics_ctx

Le résultat attendu si tout va bien :
Configured wxWidgets 3.2.4 for `x86_64-pc-linux-gnu'

  Which GUI toolkit should wxWidgets use?                 GTK+ 3 with support for GTK+ printing
  Should wxWidgets be compiled into single library?       no
  Should wxWidgets be linked as a shared library?         no
  Should wxWidgets support Unicode?                       yes (using wchar_t)
  What level of wxWidgets compatibility should be enabled?
                                       wxWidgets 2.8      no
                                       wxWidgets 3.0      yes
  Which libraries should wxWidgets use?
                                       STL                yes
                                       jpeg               sys
                                       png                sys
                                       regex              sys
                                       tiff               sys
                                       lzma               no
                                       zlib               sys
                                       expat              sys
                                       libmspack          no
                                       sdl                no
                                       
Ensuite on lance la compilation (cela prend une bonne vingtaine de minutes)
make
Jusqu'ici tout est contenu dans le répertoire de travail.
Il faut passer en mode root pour installer les exécutables à leur emplacement définitif
sudo make install

Un peu de nettoyage :
make distclean (pour nettoyer l'installation des fichiers créés dans le répertoire de compilation)
Vider le répertoire wxPersoBuild

On recommence pour la version de compilation croisée
Version 32 bits
Peu de choses changent. Le préfixe d'installation, bien sûr et la présence de la directive --host qui indique le type d'architecture sur laquelle l'exécutable sera utilisé. Ici i686-w64-mingw32 pour une cible Win32
../configure --prefix=/opt/Persowx324_Win32 --host=i686-w64-mingw32 --enable-unicode --build=`../config.guess` --disable-shared
résultat:
Configured wxWidgets 3.2.4 for `i686-w64-mingw32'

  Which GUI toolkit should wxWidgets use?                 msw
  Should wxWidgets be compiled into single library?       no
  Should wxWidgets be linked as a shared library?         no
  Should wxWidgets support Unicode?                       yes (using wchar_t)
  What level of wxWidgets compatibility should be enabled?
                                       wxWidgets 2.8      no
                                       wxWidgets 3.0      yes
  Which libraries should wxWidgets use?
                                       STL                no
                                       jpeg               builtin
                                       png                builtin
                                       regex              builtin
                                       tiff               builtin
                                       lzma               no
                                       zlib               builtin
                                       expat              builtin
                                       libmspack          no
                                       sdl                no
make
sudo make install
N'oubliez pas de faire un peu de nettoyage comme montré plus haut

Version 64 bits maintenant
../configure --prefix=/opt/Persowx324_Win64 --host=x86_64-w64-mingw32 --enable-unicode --build=`../config.guess` --disable-shared
résultat :
Configured wxWidgets 3.2.4 for `x86_64-w64-mingw32'

  Which GUI toolkit should wxWidgets use?                 msw
  Should wxWidgets be compiled into single library?       no
  Should wxWidgets be linked as a shared library?         no
  Should wxWidgets support Unicode?                       yes (using wchar_t)
  What level of wxWidgets compatibility should be enabled?
                                       wxWidgets 2.8      no
                                       wxWidgets 3.0      yes
  Which libraries should wxWidgets use?
                                       STL                no
                                       jpeg               builtin
                                       png                builtin
                                       regex              builtin
                                       tiff               builtin
                                       lzma               no
                                       zlib               builtin
                                       expat              builtin
                                       libmspack          no
                                       sdl                no
make
sudo make install
Un peu de nettoyage (voir plus haut)

Ouf ! c'est fait.

 

Accueil