Démarrer avec Code::Blocks et GTK+ sous Windows

Thierry Chappuis

En successeur de Dev-C++, dont le développement a été arrêté, Code::Blocks est actuellement l'environnement de développement le plus populaire chez les personnes débutant la programmation en C ou en C++. Le but de ce tutoriel est de vous apprendre à utiliser cet outil.

Merci d'apporter vos avis.
Commentez

- Titre : Démarrer avec Code::Blocks et GTK+ sous Windows

- Auteur : Thierry Chappuis

- Parution : 18 septembre 2007

- Mise à jour : 15 février 2016

- Public visé :

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2016 cb. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Public cible

- III. Installer l'environnement de développement

- III-A. Installation de l'EDI Code::Blocks

- III-B. Installation des bibliothèques GTK+, GLib et GObject

- IV. Votre premier projet en ligne de commande sous Code::Blocks

- V. Comment bien régler votre compilateur sous Code::Blocks

- VI. Votre premier projet GTK+ sous Code::Blocks

- VII. Conclusion

I - Introduction

L'environnement de développement intégré (EDI) Code::Blocks est actuellement un des meilleurs, issus du monde du logiciel libre et destiné à la programmation en C et en C++. En plus d'être multiplate-forme (Code::Blocks est disponible sous Windows et sous Linux), cet outil a notamment l'avantage d'être relativement simple d'utilisation tout en proposant nombres de fonctionnalités avancées.

En successeur de Dev-C++, dont le développement a été arrêté, Code::Blocks est actuellement l'environnement de développement le plus populaire chez les personnes débutant la programmation en C ou en C++. N'embarquant pas de compilateur, Code::Blocks est utilisé la plupart du temps avec la suite gcc, issue du projet GNU dont la version Windows est distribuée sous le nom de MinGW. Si l'installation d'un environnement de programmation complet, incluant gcc ainsi que nombres de bibliothèques, telles que GLib, GTK+, SDL, ou pthread, est souvent aisée sous Linux ou Unixoïde (la plupart de ces éléments étant installés par défaut), le débutant sous Windows est souvent dérouté par le besoin d'installer un EDI, puis un compilateur, puis telle ou telle bibliothèque avec son environnement runtime et ses fichiers d'en-tête. En particulier, Code::Blocks ne propose sur son site de téléchargement, que la version 1.0 Realease Candidate 2 qui commence à dater. Pour une version plus récente de l'EDI, le programmeur est dirigé vers des versions de développement appelées « nighty builds » disponibles sur un forum dédié. Ces versions de développement comptent nombre de fonctionnalités utiles, dont un template de projet GTK+, qui facilite de manière non négligeable la configuration du compilateur lors de l'utilisation des bibliothèques GLib, GObject et GTK+. Les « nighty builds » sont disponibles sous la forme d'archives compressées au format 7z. Elles n'incluent pas la suite de compilateurs MinGW, et les DLL contenant le runtime de wxWidgets (le toolkit graphique utilisé par Code::Blocks) et de MinGW sont distribuées séparément.

Dans ce contexte, et afin de faciliter au maximum le démarrage du programmeur débutant, j'ai entrepris de créer un installateur prenant en charge l'installation des versions de développement de Code::Blocks. Il existe deux versions de cet installateur, l'une incluant le compilateur fournit par la distribution MinGW, et l'autre faisant la supposition que vous avez déjà installé cet outil et configuré votre système pour permettre à Code::Blocks de l'utiliser. Ce didacticiel explique donc la procédure à suivre pour démarrer sans douleur et le plus rapidement possible avec Code::Blocks. Il vise à obtenir, en un minimum de clics de souris, un environnement de développement fonctionnel permettant d'expérimenter avec le langage C et les bibliothèques GLib, GObject et GTK+. Ces bibliothèques fourniront au débutant une boîte à outils idéale pour commencer son parcours avec notamment un grand nombre de structures de données génériques, optimisées et réutilisables à volonté, un framework objet très flexible, ainsi qu'un toolkit graphique permettant de réaliser relativement facilement des interfaces graphiques utilisables sous Windows, Linux ou Mac.

II - Public cible

Ce didacticiel est destiné à l'apprenti programmeur débutant la programmation en C sous Windows. La procédure d'installation proposée ne demande aucune connaissances particulière, et vise à obtenir un environnement de développement fonctionnel en un minimum de temps et avec un minimum d'intervention de la part du débutant. Ce dernier pourra alors se concentrer sur les détails liés au langage C, sur la documentation et les possibilités des différentes bibliothèques prêtes à l'emploi, ou sur la résolution de problèmes d'algorithmique. Code::Blocks, gcc, GTK+ sont des outils et rien de plus. Il est certes instructif de savoir configurer un environnement de compilation à la main, user avec agilité de la ligne de commande, installer de nouvelles bibliothèques, bref… apprendre à voler de ses propres ailes. Cependant, cet apprentissage peut se faire dans un deuxième temps, lorsque le débutant aura acquis un peu d'expérience avec les outils qui lui sont proposés, lorsqu'il les aura manipulés et lorsqu'il aura compris la manière avec laquelle interagissent les différents composants du système.

Vamos ! Assez de belles paroles et passons directement à l'installation de Code:Blocks et des bibliothèques associées à GTK+. Vous verrez qu'en cinq minutes, montre en main, vous disposerez d'un environnement productif vous permettant de plonger au cœur de la programmation en C et de ses facettes les plus évoluées.

III - Installer l'environnement de développement

III-A - Installation de l'EDI Code::Blocks

Les archives permettant d'installer les versions « nighty builds » de Code::Blocks peuvent être téléchargées depuis le forum suivant :

- http://forums.codeblocks.org/index.php?board=20.0.

Il semble toutefois que certaines personnes débutant la programmation et leur apprentissage du langage C sous le système d'exploitation Windows rencontrent certaines difficultés à obtenir une installation fonctionnelle. C'est pour cette raison que j'ai décidé de créer l'installateur ci-dessous permettant d'automatiser au maximum la procédure.

Vous pouvez télécharger l'installateur pour Code::Blocks « nighty builds » aux adresses ci-dessous. Si vous ne possédez pas déjà une installation fonctionnelle de la suite de compilateurs MinGW32, il est recommandé d'utiliser l'installateur suivant, prévu à cet effet :

(Avec le compilateur MinGW, « nighty build » du 22/08/2007, révision 4405)

- CodeBlocks_20070822_rev4405_win32_mingw_setup.exe ;

(Sans le compilateur MinGW, « nighty build » du 22/08/2007, révision 4405)

- CodeBlocks_20070822_rev4405_win32_setup.exe.

Commencez par vous assurer que Code::Blocks n'est pas déjà installé sur votre système. Si une version antérieure a déjà été installée, il est préférable de la désinstaller complètement. À part ce point de détail, il n'y a aucune remarque particulière au sujet de l'installation. Acceptez la licence et tous les paramètres par défaut. L'installation devrait se passer comme sur des roulettes. Une icône sera créée sur votre bureau et Code::Blocks sera automatiquement lancé une fois la procédure d'installation terminée. Pour démarrer Code::Blocks manuellement, allez dans le menu Démarrer → Programmes → CodeBlocks → CodeBlocks de Windows. Vous pouvez procéder à la désinstallation très facilement en exécutant le programme suivant : Démarrer → Programmes → CodeBlocks → Uninstall CodeBlocks. Si vous avez rencontré des problèmes lors de l'installation ou si vous désirez installer une version plus récente, il est préférable de désinstaller Code::Blocks avant de débuter une nouvelle installation.

III-B - Installation des bibliothèques GTK+, GLib et GObject

Pour installer les fichiers de développement et DLL permettant d'utiliser les bibliothèques GLib ou GTK+, il suffit de se rendre à l'adresse suivante :

- http://gladewin32.sourceforge.net/modules/news/.

Il faut alors télécharger l'installateur pour l'environnement de développement GTK+ le plus récent qui, à l'heure où je rédige ces lignes, est le fichier suivant :

- Gtk+/Win32 Development Environment (runtime, devel, docs, glade, etc.) Installer 2.10.11-1 (.exe, 11.97M).

Cet installateur contient tout ce qu'il vous faut pour développer avec les bibliothèques GLib et GTK+. Une fois ces dernières installées, vous pourrez profiter de l'immense catalogue de fonctionnalités de GLib et programmer des interfaces graphiques portables. Lors de l'installation, acceptez les paramètres par défaut et GTK+ s'installera dans le répertoire C:\GTK.

Si votre programme utilise les bibliothèques GTK+ et que vous désirez distribuer le fruit de votre labeur, ou alors si vous voulez l'exécuter sur une autre machine, il est nécessaire de télécharger l'environnement runtime de GTK+. Ce runtime devra être installé sur chaque machine hôte sur laquelle s'exécutera votre application. Vous pouvez l'obtenir à l'adresse suivante :

Gtk+/Win32 Runtime Environment Installer 2.10.11-1 (.exe, 6.43M).

Comme l'environnement de développement, l'installation se fait en deux clics, trois mouvements. Acceptez la licence et le répertoire d'installation par défaut et le tour est joué.

Vous disposez désormais d'un environnement de développement C complet. Nous allons maintenant créer un premier projet en ligne de commande sous Code::Blocks, vérifier que l'installation de l'EDI s'est bien déroulée et que votre nouveau jouet vous permet de compiler et d'exécuter des programmes en mode texte (qui ne possèdent pas d'interface graphique).

IV - Votre premier projet en ligne de commande sous Code::Blocks

1. Une fois que vous avez démarré l'EDI Code::Blocks, choisissez « Create a new project ».

2. Choisissez ensuite dans la liste qui vous est proposée le projet « Console application » et validez avec le bouton « Go ».

3. Donnez un nom à votre projet et choisissez le répertoire où il doit être enregistré. Validez avec « next »

4. Dans la fenêtre « choix du compilateur », conservez les paramètres proposés par défaut et appuyez sur « next ».

5. Sélectionner le langage (C ou C++) que vous désirez utiliser et validez en appuyant sur « Finish ».

Une fois le projet créé, vous vous retrouvez avec (TODO : capture d'écran de Code::Blocks) une interface découpée de la manière suivante. L'espace d'édition est au centre. C'est là que sont ouverts les différents fichiers dans lesquels vous écrivez le code source de votre application. Plusieurs fichiers peuvent être ouverts simultanément et la navigation entre fichiers se fait à l'aide d'onglets. Pour ouvrir le fichier d'exemple « main.c », généré lors de la création du projet, repérez sur la droite de l'interface la fenêtre avec l'onglet intitulé « Projects ». Cette fenêtre affiche une vue de votre projet sous la forme d'une arborescence. En cliquant sur le nom de votre projet, vous découvrez un répertoire nommé « Sources ». Celui-ci contient un fichier « main.c ». Si vous double-cliquez sur ce fichier, ce dernier s'ouvre et le code source qu'il contient peut être édité. « main.c » contient le programme minimal suivant :

1. #include

2. #include

4. int main()

5. {

6. printf("Bonjour Developpez.com!\n");

7. return 0;

8. }

Il s'agit du célèbre « Hello World ». Certes ce programme ne va pas révolutionner le monde de l'informatique, mais il va nous servir à tester notre installation de Code::Blocks ainsi que la configuration du compilateur. Pour compiler, rendez-vous dans le menu Build →Build (ou utilisez le raccourci clavier CTRL-F9). Vous devriez voir un message comme ci-dessous s'afficher dans la fenêtre « Messages » en bas de l'interface :

Compiling: main.c
Linking console executable: bin/Debug/test.exe
Process terminated with status 0 (0 minutes, 4 seconds)
0 errors, 0 warnings

Tout est OK ? Vous pouvez exécuter votre projet en allant dans le menu Build -> Run (ou à l'aide du raccourci clavier CTRL-F10). Une console s'ouvre et le message « Bonjour Developpez.com ! » s'affiche. Une fois l'exécution terminée, la console attend que vous appuyiez sur la touche ENTER avant de disparaître. Vous pouvez donc continuer à éditer votre code et recommencer le cycle compilation/exécution afin de vérifier l'état d'avancement de votre projet.

Par où continuer notre découverte de Code::Blocks? Le langage C est un langage compact, mais très pointu et rempli de subtilités, ce qui en fait, au dire de certains, un langage réservé aux spécialistes. Je suis en partie d'accord avec cette affirmation, mais un réglage adéquat du compilateur peut s'avérer être une aide précieuse dans notre apprentissage. La prochaine section détaillera donc la marche à suivre pour bien configurer le niveau des avertissements générés par gcc.

V - Comment bien régler votre compilateur sous Code::Blocks

Comment l'affirme Emmanuel Delahaye sur son site web, à mettre entre les mains de n'importe quel programmeur désirant comprendre et appréhender les finesses et les pièges du langage C, le compilateur est par défaut, réglé avec un niveau d'avertissement très laxiste. Cette situation n'est pas idéale dans le contexte d'un langage tel que le C qui demande beaucoup de rigueur, mais qui permet également beaucoup de constructions douteuses. En réglant plus finement notre compilateur, nous autorisons gcc de nous signaler un certain nombre de situations qui présentent un comportement indéfini et qui, par définition, annoncent un bogue potentiel.

Gcc permet un réglage très fin des avertissements documenté de manière très complète dans le manuel d'utilisation. Bien entendu, dans ce domaine, chaque programmeur possède ses habitudes. Toutefois, il est de bon ton de systématiquement activer un certain nombre d'options parmi lesquelles :

-Wall -Wextra -O2 -Wstrict-prototypes --Wwrite-strings

À ces options, j'ai encore l'habitude d'ajouter :

-ansi -pedantic

Pratiquement, on peut régler les options passées au compilateur via le menu Project → Build options… Une fenêtre apparaît avec un certain nombre de cases à cocher. Dans la fenêtre « Compiler Flags », cochez les cases [-ansi], [-Wall], [-pedantic], [-O2] et [-W]. Cliquez sur l'onglet « Other options », entrez les options suivantes, une par ligne :

-Wextra
-Wstrict-prototypes
-Wwrite-strings

Validez en appuyant sur le bouton prévu à cet effet, et sauvez le projet en allant dans le menu File → Save project. Il n'y a rien de plus à faire. Vous voilà maintenant prêt pour attaquer votre premier projet GTK+. C'est l'objet de la prochaine section.

VI - Votre premier projet GTK+ sous Code::Blocks

1. Une fois que vous avez démarré l'EDI Code::Blocks, choisissez « Create a new project ».

2. Choisissez ensuite dans la liste qui vous est proposée « GTK+ project » et validez avec le bouton « Go ».

3. Donnez un nom à votre projet et choisissez le répertoire où il doit être enregistré. Validez avec « next ».

4. Code::Blocks vous demande où est installé GTK+. Si vous avez installé GTK+ à l'emplacement proposé par défaut, il faut alors indiquer « C:\GTK » et appuyer sur « next ».

5. Appuyez sur « Finish ».

Voilà, votre premier projet GTK+ est maintenant créé. Un fichier source d'exemple a également été généré pour vous. Il va vous permettre de vérifier que l'installation s'est bien déroulée et que votre nouvel environnement de développement est fonctionnel. Pour consulter le fichier d'exemple, allez dans la fenêtre des projets (à droite de fenêtre d'édition) et double-cliquez sur le nom de votre projet, puis sur « Sources ». Un double-clic sur le fichier « main.c » vous permet de l'ouvrir.

Il s'agit d'un programme GTK+ plus ou moins minimal qui a le grand avantage d'être compilable (TODO : expliquer dans les grandes lignes le programme d'exemple). Pour lancer la compilation, rendez-vous dans le menu Build → Build (ou utilisez le raccourci clavier CTRL-F9). Vous devriez voir un message comme ci-dessous s'afficher dans la fenêtre « Messages »:

Compiling: main.c
Linking console executable: bin\Debug\gtktest.exe
Process terminated with status 0 (0 minutes, 4 seconds)
0 errors, 0 warnings

Si tel est le cas, c'est que l'installation de Code::Blocks et de GTK+ s'est bien passée. Bienvenue dans le monde de la programmation d'interfaces graphiques avec C et GTK+. Vous pouvez exécuter le projet fraîchement compilé en allant dans le menu Build → Run (ou à l'aide du raccourci clavier CTRL-F10). Vous pouvez dès maintenant débuter votre apprentissage de GTK+ avec les documents suivants :

- https://nicolasj.developpez.com/gtk/cours/ ;

- https://gtk.developpez.com/cours/gtk2/.

- https://developer.gnome.org/gtk3/unstable/index.html.

La documentation de GTK+ est disponible à l'adresse suivante :

- http://developer.gnome.org/devel/gtk/unstable/index.html.

VII - Conclusion

J'en ai fini pour aujourd'hui et j'espère que votre environnement de développement est désormais fonctionnel. Code::Blocks est un EDI de qualité et les compilateurs C et C++ fournis par la distribution MinGW (il s'agit du port Windows des célèbres compilateurs gcc et g++, issus du projet GNU et du monde Linux), sont parmi les plus respectueux des standards. Vous voilà prêt à vous lancer dans le vif du sujet en programmant vos premières applications en C. Les possibilités qui s'offrent à vous dès maintenant n'ont aucune limite autre que celles de votre imagination. La bibliothèque GLib vous facilitera la vie à de nombreuses reprises en mettant à votre disposition un grand nombre d'outils et structures de données optimisés (Threads, gestion de la mémoire, création d'un système de greffons, listes chaînées, arbres, etc.), vous permettant de gagner de précieuses heures de travail et de faciliter le portage de vos applications sur de multiples plate-formes. GObject vous fournit un environnement permettant d'améliorer la conception de vos applications et des vos bibliothèques. Tout en vous permettant de programmer dans un style orienté-objet, ce framework facilite également la création de passerelles entre votre code et des langages de plus haut niveau, tels que Python ou Ruby, en limitant au maximum l'écriture de « glue code ». Enfin, GTK+ vous permettra d'écrire des interfaces graphiques portables. Cette bibliothèque est relativement facile à prendre en main et elle est très bien documentée.

Ce didacticiel n'en est qu'à son premier jet et ne fait que débuter notre découverte de l'EDI Code::Blocks. Il est appelé à se compléter dans les prochaines semaines. Dans un avenir proche, vous apprendrez notamment à configurer correctement le niveau d'avertissement de votre compilateur afin de faciliter la détection des constructions douteuses et autres morceaux de code au comportement indéfini. Vous découvrirez également comment déboguer efficacement avec Code::Blocks, comment ajouter de nouveaux mots-clés à la coloration syntaxique, afin de faciliter votre travail avec GTK+, ou encore comment utiliser le plugin AStyle pour automatiser le formatage de votre code (par exemple avant de poster sur les forums).

Voilà! Notre apprentissage commence ici. D'autres articles sont actuellement en préparation. Ils vous présenteront différents aspects de la GLib et de la bibliothèque GObject à deux niveaux différents : ces bibliothèques vous seront présentées par l'exemple, à travers la programmation d'un exemple concret (exemple encore à définir). Un peu plus technique, nous regarderons également sous le capot et essayerons notamment de comprendre le fonctionnement du modèle objet et les possibilités d'introspection proposées par GObject. Quel programme ! N'hésitez donc pas à revenir pour découvrir les dernières mises à jour.