Vous êtes ici

GTK+3 "statique" pour Windows

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.

Là encore, je rappelle que 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.

Le code spécifique à Windows dans GTK+3 (et plusieurs dépendances) n'est pas du tout prévu pour compiler statiquement. C'est pourquoi de nombreuses modifications sont nécessaires pour obtenir ceci :

Il n'y a pas de DLL GTK+3 dans ce répertoire...

... mais pourtant gtk3-demo.exe (statique) fonctionne !

Pour essayer, téléchargez :

gtk3-demo_static-WIN32.zip (5,51 Mo)

Cela devrait fonctionner même sans DLL GTK+3 installés sur le système.

(PS : 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)

GTK+ 3.4.2 "statique" (fichiers de développement) pour GNU/Linux

Pour compiler de tels exécutables vous-même, téléchargez :
gtk342_static-WIN32_(TARNYKO).zip (14,6 Mo)

Comment utiliser :

Nécessite une installation fonctionnelle de MinGW.

Extrayez l'archive dans c:\, pour obtenir c:\gtk342_static, puis compilez votre programme avec ce type de commande :

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

(PS : l'ordre des arguments est important, ne le changez pas)

Voilà !