2013-05-16
Objectif : créer des exécutables GTK+3 indépendants pour Windows.
Dans la continuité de ce précédent article, voici le nécessaire pour créer des exécutables statiques avec GTK+ 3.4.2 sous Windows.

Le but est, plutôt que d'avor une arborescence complète avec DLL, fichiers de ressources... un seul et unique exécutable, ce qui peut être utile pour fournir des démos ou installeurs par exemple.
À noter que, légalement, la bibliothèque est fournie sous licence LGPL : cela signifie que vous ne pourrez faire ceci que si votre application est elle-même sous GPL/LGPL !
Télécharger : gtk342_static-WIN32_(TARNYKO).zip (14,6 Mo)
et extraire l'archive dans C:\ pour obtenir le répertoire "C:\gtk342_static\".
Prérequis : nécessite une installation fonctionnelle de MinGW.
Compiler votre programme avec ce type de commande
(sur une seule ligne si vous n'utilisez pas Bash) :
gcc monprogramme.c -o monprogramme.exe \
-Ic:\gtk342_static\include\gtk-3.0 \
-Ic:\gtk342_static\include\glib-2.0 -Ic:\gtk342_static\lib\glib-2.0\include \
-Ic:\gtk342_static\include\gdk-pixbuf-2.0 -Ic:\gtk342_static\include\pango-1.0 \
-Ic:\gtk342_static\include\cairo -Ic:\gtk342_static\include\atk-1.0 -Lc:\gtk342_static\lib \
-lgtk-3 -lgdk-3 -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0 -lpango-1.0 -latk-1.0 -lcairo \
-lcairo-gobject -lpangocairo-1.0 -lintl -lgmodule-2.0 -lgio-2.0 -limm32 -luser32 -lgdi32 \
-luuid -lole32 -lpng -lgdiplus -lpangowin32-1.0 -lffi -lws2_32 -lwinmm -lglib-2.0 -lpixman-1 \
-lfreetype -lfontconfig -lpangoft2-1.0 -lmsimg32 -liconv -lshlwapi -lz -lgdi32 -ldnsapi \
-lusp10 -lfreetype -lexpat -lgcc -lkernel32 -lmsvcrt
(P.S.: : l'ordre des arguments est très important, ne le changez pas !)
Comme vous pourrez le voir, sans DLLs GTK+3 dans le répertoire...

... l'application fonctionnera !

(P.S. : certaines démos "plantent" du fait de l'absence des fichiers requis. Mais globalement, on peut remarquer que le thème s'adapte au système sous-jacent, et même que l'internationalisation fonctionne si l'on recopie le dossier "/share/locale" d'une installation complète au niveau de l'exécutable)