Vous êtes ici

Tutoriel : compiler un programme C/GTK+3 avec Microsoft Visual C++

Objectif : compiler un code source C/GTK+3 avec Microsoft Visual C++ 2008, via l'EDI et en ligne de commande.

Mille remerciements à Antonio Scuri sans lequel cet article n'existerait pas.

Bien que l'installeur GTK+ 3.6.1 Bundle fourni sur mon blog soit plutôt destiné à être utilisé avec MinGW, il est parfaitement possible pour un développeur de s'en servir avec Microsoft Visual C++ (en suivant quelques bonnes pratiques).

Nous allons dans ce tutoriel essayer de compiler ce code source C.

Attention : les exemples suivants ont été testés avec Visual C++ 2008. Ils seront éventuellement à adapter pour une autre version.

1) Graphiquement dans l'EDI

a) Créer un projet

Créer un nouveau projet de Type "Win32" -> "Application console Win32", en cochant bien l'option "Projet vide".


b) Intégrer le fichier source

Faire glisser le fichier source "gtk3test.c" dans la section "Fichiers sources".

c) Ajouter les dossiers d'include

Cliquer sur "Projet" -> "Propriétés de..." -> "Propriétés de configuration" -> "C/C++" -> "Général".
Cliquer sur le bouton "..." de la ligne "Autres répertoires Include".

Cliquer sur le 1er bouton représentant un dossier ("Nouvelle ligne") et ajouter successivement :

(à modifier en fonction de l'emplacement où vous avez installé GTK+)

d) Ajouter les bibliothèques d'import

Ouvrer l'Explorateur, déplacez-vous dans le sous-dossier "lib" de GTK+, et faites glisser tous les fichiers .lib dans la section "Fichiers de ressources".

(ici, seuls ces 2 sont requis)

e) Ajouter l'option -Dinline=

Visual C++ ne comprend pas les directives "inline" ; nous allons les remplacer par des blancs en retournant dans la fenêtre d'options C/C++, sous-catégorie "Ligne de commande" et y écrire "-Dinline="

f) Compiler et exécuter

Presser la touche [F5]... Voilà !

1) En ligne de commande

a) Lancer l'invite de Commandes Visual Studio

Lancer "Démarrer" -> "Programmes" -> "Microsoft Visual C++..." -> "Visual Studio Tools" -> "Invite de commandes de Visual Studio".

b) Mettre le dossier d'installation de GTK+ dans une variable

Obtenez le chemin absolu du dossier où vous avez installé GTK+ (par défaut : "C:\Program Files\GTK+-Bundle-3.6.1"). Puis mettez-le dans une variable :

set GTKDIR=C:\Program Files\GTK+-Bundle-3.6.1

(Nota : pas d'espaces entre "=" et le reste, ni de guillemets pour le chemin !)

c) Lancer la compilation

Nous allons lancer le compilateur C avec successivement le fichier source, les dossiers d'include (contenant les fichiers .h), la petite astuce -Dinline=, les dossiers de bibliothèques (contenant les fichiers .lib) et les fichiers .lib eux-mêmes :

cl gtk3test.c -I"%GTKDIR%\include\gtk-3.0" -I"%GTKDIR%\include\glib-2.0" -I"%GTKDIR%\lib\glib-2.0\include" -I"%GTKDIR%\include\pango-1.0" -I"%GTKDIR%\include\cairo" -I"%GTKDIR%\include\gdk-pixbuf-2.0" -I"%GTKDIR%\include\atk-1.0" -Dinline= /link /libpath:"%GTKDIR%\lib" gtk-win32-3.0.lib gobject-2.0.lib

(Nota 1 : "-Dinline=" va remplacer le mot clé "inline", non supporté par Visual C++, par un blanc dans les sources de GTK+)

(Nota 2 : ici, nous n'avons spécifié que "gtk-win32-3.0.lib" et "gobject-2.0.lib" car notre programme est très simple. Un code plus complexe pourrait nécessiter d'autres bibliothèques)



Voilà ! Par la suite, si vous changez l'emplacement d'installation de GTK+, vous n'aurez qu'à modifier GTKDIR.

Le résultat final :

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de vérifier que vous êtes un humain et d'éviter les commentaires automatiques.
Image CAPTCHA
Enter the characters shown in the image.