Création et compilation d'un projet C/C++
Cet article a pour but d'aider le débutant à prendre en main Visual C++ 2005 Express Edition pour programmer en C/C++ sous Windows.
Principe du projet et de la solution
Visual C++ est un IDE, c'est à dire un environnement de développement intégré (EDI en français). Avant de pouvoir compiler quoique ce soit, il est nécessaire de créer un projet.
Un projet est un environnement de compilation qui décrit tout ce qu'il faut pour parvenir à compiler et construire un programme. Cela inclut bien sûr la liste des fichiers à compiler, mais aussi l'ensemble des options qu'il faut passer au compilateur pour y parvenir. Le fichier projet est en quelque sorte à l'IDE ce que le makefile est à make. Et justement, depuis Visual C++ 2005, le format des fichiers projets de l'IDE est le même que celui du nouveau système de construction de projet de Microsoft : MSBuild. Un fichier projet Visual C++ peut ainsi être compilé depuis l'IDE ou bien en ligne de commande avec MSBuild.
Depuis Visual C++ 7, le projet n'est plus l'élément racine sur lequel on travaille, mais fait partie d'une solution. Une solution est simplement une entité qui regroupe un ou plusieurs projets. Le projet actif est celui sur lequel on travaille, et figure en gras dans la fenêtre Solution Explorer. Cette même fenêtre permet d'ajouter ou de retirer des projets de la solution:
Il existe deux grandes catégories de projets : Win32 et CLR. Elles sont d'ailleurs clairement séparées au niveau de l'assistant de création d'un projet:
Visual C++ 2005 Express permet en effet de cibler deux types de plateforme:
Win32 : il s'agit du développement classique pour systèmes Windows 32 bits (Win32). Les programmes sont écrits en C/C++ traditionnel, et compilés nativement pour processeurs de type Intel x86 ou compatibles. Il s'agit du développement tel qu'on le connaissait avec Visual C++ 6.
CLR : il s'agit de la plateforme .Net 2.0 de Microsoft, dont le moteur d'exécution s'appelle le CLR. Les programmes sont développés en C++/CLI dans notre cas (en C# dans le cas de Visual C#, en VB.Net dans le cas de Visual Basic.Net, ...) et compilés dans un langage intermédiaire qui n'est pas directement exécutable par le processeur. C'est le CLR qui va effectuer la compilation finale et contrôler l'exécution du résultat (environnement sécurisé). La présence du framework .Net 2.0 est donc indispensable sur chaque machine devant exécuter un programme C++/CLI.
Un projet CLR n'empêche pas de faire du développement natif en C++ classique. C'est même l'une des raisons d'être de C++/CLI : faciliter la réutilisation de bibliothèques C/C++ classiques depuis le monde managé de .Net (et inversement). Un projet C++/CLI typique aboutit donc à la compilation conjointe de code C/C++ natif classique et de code managé. L'ensemble est ensuite fusionné d'une certaine manière pour que tout fonctionne correctement. Le résultat est donc, quoiqu'il arrive, une assembly .Net, autrement dit un exécutable lié au framework.
Création d'un projet pour développer en C++ standard
Si vous avez suivi mes précédentes explications, le type de projet à choisir pour développer en C++ est Win32. Vu qu'il n'y a qu'un seul template (modèle de projet) disponible, le choix est vite porté sur Win32 Console. Après avoir renseigné un nom, une fenêtre de personnalisation s'ouvre:
Cette fenêtre n'est pas vaine, car la configuration par défaut ne convient pas à un petit projet C++. Cliquez sur l'onglet avancé et cochez l'option Empty project afin que l'assistant ne génère aucun fichier superflu:
Ajout et création de fichiers sources
Une fois le projet créé, il faut y ajouter le(s) fichier(s) source existant à compiler:
Ou bien en ajouter de nouveaux:
Une boite de dialogue s'ouvre pour demander quel type de fichier créer. Dans le cadre de cet article, je crée un fichier source C++ nommé main.cpp:
La différenciation entre fichier source C++ et un fichier source C est effectuée au moyen de son extension. Si vous n'en précisez pas, le template choisi (C++ File (.cpp)) va ajouter l'extension .cpp. Pour créer un fichier source C qui sera compilé en tant que tel, il suffit donc de taper l'extension .c dans le nom du fichier.
Notez aussi que l'IDE permet de renommer le fichier depuis la fenêtre Solution Explorer:
Il ne reste plus qu'à taper le code à compiler. Pour cet exemple, il s'agit d'un classique "Hello World!":
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!\n";
}
Compilation et exécution
Une fois le(s) fichier(s) source(s) créé(s) ou ajouté(s), la compilation peut être lancée de nombreuses façons. Via le menu Build->Compile par exemple:
Build->Compile se limite à compiler le fichier sélectionné, alors que Build->Build se charge de compiler tout ce qui ne l'a pas été, puis effectue l'édition de liens.
Il est aussi possible de provoquer la construction complète du projet en démarrant une session de débogage via le menu Debug->Start Debugging (F5) ou en cliquant sur la flèche verte sur l'interface.
Une fois le projet compilé, il est exécuté par le débogueur. Dans le cas d'un projet console comme ici, il va afficher un bref message et se terminer aussitôt, sans que l'on ait le temps de lire quoique ce soit car la fenêtre console va se fermer aussi vite qu'elle est apparue.
Vous pouvez éviter ce désagrément sans toucher à votre code en exécutant votre programme sans le déboguer.
Visual C++ ajoutera automatiquement un pause une fois l'exécution terminée, ce qui permet de lire ce qui a été affiché.