vignette

Configurer Code::Blocks

vignette

an flag

 

---------------------------------------------
Préparation de code::blocks
---------------------------------------------

Sous Ubuntu 18.04 la compilation se fait par défaut avec l'option "pie" (position independant executable) ce qui renforce la sécurité.
Un à côté fâcheux est que le résultat est vu comme une dll et non un exécutable depuis l'explorateur.
Cela empêche l'exécution par un double clic (mais pas depuis un terminal ou le lanceur). On peut rétablir le comportement ancien, si on y tient, par l'ajout de "-no-pie" dans les options du linker.
On peut le faire depuis l'interface de code::blocks, onglet "settings"
settings->Compiler(GNU GCC Compiler)->Linker Settings-> other linker options où on ajoute l'option -no-pie

Pour une cible Windows exe 32bits
Configurer un nouveau compilateur avec un nom explicite (cross_compil_win32 par exemple)
Settings->Compiler puis copie du compilateur par defaut sous le nouveau nom.
Aller chercher les exécutables dans le répertoire /usr
pour C :i686-w64-mingw32-gcc
pour C++ :i686-w64-mingw32-g++
linker for dynamic lib:i686-w64-mingw32-g++ (!!! pas gcc)
linker for static lib: i686-w64-mingw32-ar
ressources compiler`/opt/Persowx312_Win32/bin/wx-config --host=i686-w64-mingw32 --rescomp`

Pour une cible Windows exe 64bits
Configurer un nouveau compilateur avec un nom explicite (cross_compil_win64 par exemple)
Settings->Compiler puis copy du compilateur par defaut sous le nouveau nom.
Aller chercher les exécutables dans le réperoire /usr
pour C :x86_64-w64-mingw32-gcc
pour C++ :x86_64-w64-mingw32-g++
linker for dynamic lib:x86_64-w64-mingw32-g++ (!!! pas gcc)
linker for static lib: x86_64-w64-mingw32-ar
ressources compiler`/opt/Persowx312_Win64/bin/wx-config --host=x86_64-w64-mingw32 --rescomp`

Pour chaque compilateur utilisé en compilation croisée indiquer dans "linker other options" -static (pour limiter le nombre de dll autres que ce qui concerne wxWidgets)

---------------------------------------------
Préparation du fichier de configuration de chaque application (fichier cbp de codeblock)
---------------------------------------------

Le plus simple est de modifier directement le fichier cbp avec votre éditeur de texte préféré
dans les lignes du fichier "cbp" de l'application modifier les chemins vers wx-config pour la cible considérée).
Pour chaque build de wxWidgets, ce chemin est le "prefix" qui a été utilisé à l'étape "configure".
Exemples

pour < Target title="ReleaseStatic312"> (pour créer une application Linux basée sur wxWidgets 3.1.2)
Dansles options du compilateur :
< Add option="`/opt/Persowx312_Lin64/bin/wx-config --static --cflags --unicode=yes`" />
Dans les options du linker :
< Add option="`/opt/Persowx312_Lin64/bin/wx-config --unicode=yes --static --libs`" />

pour < Target title="ReleaseWinStatic312_32"> (pour créer une application Windows 32bits basée sur wxWidgets 3.1.2)
Il faut désigner le bon compilateur à la place de gcc :< Option compiler="cross_compil_win32" >
Dans les options du compilateur :
< Add option="`/opt/Persowx312_Win32/bin/wx-config --host=i686-w64-mingw32 --static --cflags --unicode=yes`" />
Dans les options du linker :
< Add option="`/opt/Persowx312_Win32/bin/wx-config --host=i686-w64-mingw32 --static --libs --unicode=yes`" />

pour < Target title="ReleaseWinStatic312_64"> (pour créer une application Windows 64bits basée sur wxWidgets 3.1.2)
Il faut désigner le bon compilateur à la place de gcc :< Option compiler="cross_compil_win64" >
Dans les options du compilateur :
< Add option="`/opt/Persowx312_Win64/bin/wx-config --host=x86_64-w64-mingw32 --static --cflags --unicode=yes`" />
Dans les options du linker :
< Add option="`/opt/Persowx312_Win64/bin/wx-config --host=x86_64-w64-mingw32 --static --libs --unicode=yes`" />


Quelques soucis si des fonctions RichText sont utilisées. je suis arrivé à ces modifications, mais cela sent le bricolage.
Dans les options du linker, il faut ajouter : std,richtext
< Add option="`/opt/Persowx312_Win32/bin/wx-config --host=i686-w64-mingw32 --static --libs std,richtext --unicode=yes`" /> pour 32 bits
< Add option="`/opt/Persowx312_Win64/bin/wx-config --host=x86_64-w64-mingw32 --static --libs std,richtext --unicode=yes`" /> pour 64 bits
En compilation normale il faut ajouter aussi l'option -lexpat
< Add option="`/opt/Persowx312_Lin64/bin/wx-config --unicode=yes --static --libs std,richtext`" />
< Add option="-lexpat" />

 

L'application"ProjetMiniMini en fait autant que ce que son nom promet mais vous trouverez avec les sources son fichier cpb qui peut servir d'exemple.

 

Accueil