Blaise Revaux



Débuter avec GTK3 en C

Rédigé le 08 août 2017 - Mis à jour le 09 août 2017

Introduction

Je vous présente dans ce tutoriel l'installation de la bibliothèque GTK3 pour ajouter une interface graphique à vos programmes.
Plusieurs bibliothèques existent, notamment Qt, j'ai fait personnellement le choix de GTK pour avoir l'habitude de travailler dans l'environnement Gnome. GTK présente l'avantage d'être libre et multiplateforme.
Je détaillerai l'installation de l'environnement de développement nécessaire, la configuration de l'IDE et la création d'un programme de base.

Installation

Windows

MSYS2 & GTK3

La première étape consiste à installer MSYS2 qui nous permettra d'installer la dernière version de GTK3, téléchargez la dernière version sur le site officiel, disponible en 32bits et 64bits, puis installez.
Une fois installé, lancez MSYS2, mettez le noyau à jour avec la commande pacman -Syu puis relancez MSYS2.
Pour finir la mise-à-jour de MSYS2, lancez la commande pacman -Su

Ensuite, l'installation des outils de compilations nécessaire se fait par la commande suivante:
Pour windows 64 bits: pacman -S mingw-w64-x86_64-toolchain base-devel
Pour windows 32 bits: pacman -S mingw-w64-i686-toolchain base-devel

L'installation de la dernière version de GTK3 se fait par la commande suivante:
Pour windows 64 bits: pacman -S mingw-w64-x86_64-gtk3
Pour windows 32 bits: pacman -S mingw-w64-i686-gtk3

IDE

La seconde étape consiste à paramétrer votre IDE pour utiliser la bibliothèque GTK3, je présente ici le cas de codeblocks mais la procédure est similaire pour les autres IDEs.
Pour commencer, nous allons configurer le compilateur que nous venons d'installer. Dans codeblocks: Settings>Compiler... onglet Toolchain executables, indiquez les chemins des exécutables présents dans le répertoire MinGW de MSYS2.
Options de compilateur

Projet

Commencez par créer un nouveau projet console (il ne faut pas utiliser le template GTK qui n'est pas à jour), puis modifiez les options de compilation du projet:

Project>Build options... Compiler settings onglet Other compiler options ajoutez: `pkg-config --cflags gtk+-3.0`

Project>Build options... Linker settings onglet Other linker options ajoutez: `pkg-config --libs gtk+-3.0`

Options du projet

Linux

GTK3

Pour les distributions Debian et dérivées, les paquets GTK3 libgtk-3-dev sont disponibles dans les dépôts.

Projet

La configuration du projet avec codeblock sous linux est identique à la configuration sous windows.

Premier programme

Nous allons ici tester la configuration avec un programme de base qui ouvre une fenêtre vide.

Le code du programme

Code introuvable

Explications

Ce programme très simple peut vous servir de template.

L'inclusion de la bibliothèque dans les directives de préprocesseur permet d'utiliser les fonctions de GTK.
La librairie est initialisée, la fenêtre principale est créée puis un titre est ajouté à celle-ci.
Cette fenêtre est connectée au signal delete-event émis lors de la fermeture de la fenêtre et permet de sortir de la boucle principale de GTK en lui associant l'action gtk_main_quit.
La fenêtre et l'ensemble de son contenu (vide dans notre cas) sont affichés puis la boucle d'action de GTK est lancée.
Les instructions qui suivent sont exécutées après sortie de la boucle d'action, c'est-à-dire après avoir fermé la fenêtre dans notre exemple.

Distribution

Pour partager votre programme, le plus simple est de fournir un répertoire contenant l'exécutable, l'ensemble des dll nécessaires et autres dépendances.

  • Les DLLs nécéssaires sont fournies dans le répertoire d'installation de MSYS2. Copiez toutes les DLLs du dossier. Par exemple pour une version 64 bits: C:/msys64/mingw64/bin/
  • Vous aurez aussi besoin des icônes, selon le thème choisi, par défaut Adwaita. Vous les trouverez ici: C:/msys64/mingw64/share/icons/
  • Pour le support des graphiques vectoriels (SVG), il faudra inclure le répertoire gdk-pixbuf-2.0. Vous le trouverez ici: C:/msys64/mingw64/lib/gdk-pixbuf-2.0/
  • Pour le support des différentes langues, il faudra inclure le répertoire locale. Vous le trouverez ici: C:/msys64/mingw64/share/locale/
  • Il est également possible d'utiliser un fichier de configuration personnalisé: settings.ini

Vous pouvez fournir un répertoire organisé sous la forme suivante:
Arborescence

Compilation 32 bits et 64 bits

Cette section plus avancée présente la compilation sur des architectures 32 bits et 64 bits.
Les points importants sont les suivants:

  • Il est possible de compiler et lancer une version 32 et 64 bits sur une architecture 64 bits.
  • Il n'est pas possible de lancer une version 64 bits sur une architecture 32 bits.
  • Les DLLs fournies avec le programme doivent correspondre à l'architecture cible.

Prérequis

Prenons le cas où le développeur souhaite fournir une version 32 bits et une version 64 bits, travaillant sur une machine windows 64 bits:

  • MSYS2 est installé et à jour.
  • Le paquet base-devel est installé.
  • Il faut installer le compilateur dans sa version 64 bits : pacman -S mingw-w64-x86_64-toolchain
  • Il faut installer le compilateur dans sa version 32 bits : pacman -S mingw-w64-i686-toolchain
  • Il faut installer GTK3 dans sa version 64 bits : pacman -S mingw-w64-x86_64-gtk3
  • Il faut installer GTK3 dans sa version 32 bits : pacman -S mingw-w64-i686-gtk3

Configuration de codeblocks

Pour commencer, il faut gérer les deux versions du compilateur dans notre IDE:

  • GNU GCC Compiler contient la configuration 64 bits comme détaillé dans le début de l'article.
  • Nous allons créer une nouvelle configuration pour la version 32 bits.

Pour créer une nouvelle configuration, dans les options de compilateur, nous sélectionnons GNU GCC Compiler puis le dupliquons avec Copy.
Il faut ensuite modifier le chemin des différents outils pour pointer vers les version 32 bits qui se situent dans le répertoire msys64/mingw32/bin.
Options de compilateur

Dans les options du compilateur, sélectionnez cible 32 bits [-m32]. Options de compilateur - cible

Configuration du projet

Il reste maintenant à modifier le projet pour lui indiquer le compilateur à utiliser et le chemin vers les bibliothèques correspondant à l'architecture cible.

  • Changez le compilateur utilisé pour la version 32 bits (GCC 32bits dans mon cas)
  • Indiquez le chemin complet de pkg-config correspondant: C:\msys64\mingw32\bin\pkg-config.exe

Options de projet

Conclusion

Dans ce tutoriel nous avons mis en place l'environnement nécessaire à l'utilisation de la bibliothèque GTK3 et créé un programme de base.
D'autres tutoriels suivent pour l'utilisation de la bibliothèque.

Retourner en haut de la page