Eclipse 4.3 (Kepler) pour la programmation C/C++
On novembre 9, 2021 by adminEclipse est un environnement de développement intégré (IDE) open-source soutenu par IBM. Le site mère est @ www.eclipse.org. Eclipse est populaire pour le développement de projets Java. Il prend également en charge les développements de projets C/C++, PHP, Python, Perl et autres projets web via des plug-ins extensibles. Eclipse est multiplateforme et fonctionne sous Windows, Linux et Mac OS.
Comment installer Eclipse C/C++ Development Tool (CDT) 8.1.2 pour Eclipse 4.2.2 (Juno)
Étape 0 : Installer MinGW GCC ou Cygwin GCC
Pour utiliser Eclipse pour la programmation C/C++, vous avez besoin d’un compilateur C/C++. Sous Windows, vous pouvez installer soit MinGW GCC, soit Cygwin GCC. Choisissez MinGW si vous n’êtes pas sûr, car MinGW est plus léger et plus facile à installer, mais ayant moins de fonctionnalités.
- MinGW GCC : Lisez « Comment installer MinGW ».
- Cygwin GCC : Lisez « Comment installer Cygwin ». Assurez-vous que vous sélectionnez les paquets «
gcc
« , «g++
« , «gdb
» et «make
» sous la catégorie «Devel
« . (Développement) – ces paquets ne font pas partie de l’installation par défaut.
Etape 1 : Installer l’outil de développement C/C++ d’Eclipse (CDT)
Deux façons d’installer CDT, selon que vous avez ou non installé préalablement un Eclipse :
- Si vous avez déjà installé « Eclipse for Java Developers » ou d’autres packages Eclipse, vous pourriez installer le plug-in CDT comme suit :
Lancer Eclipse ⇒ Aide ⇒ Installer un nouveau logiciel ⇒ Dans le champ « Travailler avec », déroulez le menu déroulant et sélectionnez « Kepler – http://download.eclipse.org/releases/kepler ». (ou juno pour Eclipse 4.2 ; ou helios pour Eclipse 3.7).
Dans la case « Nom », développez le nœud « Langage de programmation » ⇒ Cochez « Outils de développement C/C++ » ⇒ « Suivant » ⇒ …. ⇒ « Finish ». - Si vous n’avez installé aucun package Eclipse, vous pourriez télécharger « Eclipse IDE for C/C++ Developers » à partir de http://www.eclipse.org/downloads, et décompresser le fichier téléchargé dans un répertoire de votre choix.
Étape 2 : Configuration
Vous n’avez PAS besoin de faire de configuration, tant que les binaires Cygwin ou MinGW sont inclus dans la variable d’environnement PATH
. CDT recherche la PATH
pour découvrir les compilateurs C/C++.
Écrire votre premier programme C/C++ dans Eclipse
Programme C++
Étape 0 : Lancer Eclipse
- Démarrer Eclipse en exécutant «
eclipse.exe
» dans le répertoire installé d’Eclipse. - Choisir un répertoire approprié pour votre espace de travail (c’est-à-dire, où vous souhaitez enregistrer vos travaux).
- Si l’écran de « bienvenue » s’affiche, fermez-le en cliquant sur le bouton « fermer ».
Etape 1 : créer un nouveau projet C++
Pour chaque application C++, vous devez créer un projet pour conserver tous les codes sources, les fichiers objets, les fichiers exécutables et les ressources pertinentes.
Pour créer un nouveau projet C++ :
- Choisissez le menu « Fichier » ⇒ « Nouveau » ⇒ Projet… ⇒ C/C++ ⇒ Projet C++.
- La boîte de dialogue « Projet C++ » apparaît.
- Dans le champ « Nom du projet », entrez «
FirstProject
« . - Dans la case « Types de projet », sélectionnez « Exécutable » ⇒ « Projet vide ».
- Dans la case « Chaînes d’outils », choisissez votre compilateur, par ex, « Cygwin GCC » ou « MinGW GCC » ⇒ Next.
- Dans le champ « Nom du projet », entrez «
- La boîte de dialogue « Select Configurations » apparaît. Sélectionnez à la fois « Debug » et « Release » ⇒ Finish.
Étape 2 : Écrire un programme C++ Hello-world
- Dans l' »Explorateur de projet » (panneau le plus à gauche) ⇒ Cliquez avec le bouton droit sur «
FirstProject
« . (ou utilisez le menu « Fichier ») ⇒ Nouveau ⇒ Fichier source. - La boîte de dialogue « Nouveau fichier source » apparaît.
- Dans le champ « Fichier source », saisissez «
Hello.cpp
« . - Cliquez sur « Terminer ».
- Dans le champ « Fichier source », saisissez «
- Le fichier source «
Hello.cpp
» s’ouvre sur le panneau de l’éditeur (double-cliquez sur «test.cpp
» pour l’ouvrir si nécessaire). Saisissez les codes suivants :#include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Si l’erreur « Unresolved Inclusion Error »
Si l’erreur « unresolved inclusion » apparaît à côté de l’instruction #include
, les « chemins d’inclusion pour les en-têtes » ne sont pas définis correctement. Sélectionnez le menu « Projet » ⇒ Propriétés ⇒ C/C++ Général ⇒ Chemins et Symboles ⇒ Dans l’onglet « Includes »:
Pour Cygwin GCC:
- « Ajoutez » les répertoires suivants à « GNU C », où
$CYGWIN_HOME
est votre répertoire installé Cygwin :$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include-fixed
$CYGWIN_HOME\usr\include
$CYGWIN_HOME\usr\include\w32api
- « Ajoutez » les répertoires suivants à « GNU C++ », où
$CYGWIN_HOME
est votre répertoire installé Cygwin :$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include\c++
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include\c++\i686-pc-cygwin
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include\c++\backward
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include-fixed
$CYGWIN_HOME\usr\include
$CYGWIN_HOME\usr\include\w32api
Pour MinGW GCC :
- « Ajouter » les répertoires suivants à « GNU C », où
$MINGW_HOME
est votre répertoire installé de MinGW :$MINGW_HOME\lib\gcc\mingw32.6.x\include
$MINGW_HOME\include
$MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
- « Ajouter » les répertoires suivants à « GNU C++ », où
$MINGW_HOME
est votre répertoire installé Cygwin :$MINGW_HOME\lib\gcc\mingw32.6.x\include\c++
$MINGW_HOME\lib\gcc\mingw32.6.x\include\c++\mingw32
$MINGW_HOME\lib\gcc\mingw32.6.x\include\c++\backward
$MINGW_HOME\lib\gcc\mingw32.6.x\include
$MINGW_HOME\include
$MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
NOTE : Pour trouver les chemins des en-têtes, vous pouvez faire une recherche sur des en-têtes tels que « stdio.h
» (pour le C) et « iostream
» (pour C++) sous le répertoire installé de Cygwin ou de MinGW.
libmpfr4
» dans cygwin.Étape 3 : Compiler/Construire
Cliquez avec le bouton droit de la souris sur le « FirstProject
« . (ou utilisez le menu « Project ») ⇒ choisissez « Build Project » pour compiler et lier le programme.
Etape 4 : Exécuter
Pour exécuter le programme, cliquez avec le bouton droit de la souris sur le « FirstProject
» (ou n’importe où sur la source « test.cpp
« , ou sélectionnez le menu « Run ») ⇒ Run As ⇒ Local C/C++ Application ⇒ (Si demander, choisir le débogueur gdb de Cygwin) ⇒ La sortie « Hello, world ! » apparaît sur le panneau « Console ».
NOTE : Vous devez créer un nouveau projet C++ pour CHACUN de vos problèmes de programmation. C’est désordonné pour écrire des programmes jouets !
Programme C
Suivez les mêmes étapes que ci-dessus. Créez un « Projet C » (au lieu de « Projet C++ »). Essayez le programme Hello-world suivant (appelé « Hello.c
« ).
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0;}
Programme C++ avec Makefile
Dans les exemples précédents, nous utilisons ce qu’on appelle managed-make où Eclipse génère automatiquement un makefile pour construire le programme. Nous pouvons également choisir d’écrire notre propre makefile pour un contrôle complet du processus de construction.
Etape 1 : Créer un projet Makefile C++
Dans le menu « File » ⇒ New ⇒ Project… ⇒ Projet C/C++ ⇒ C++ ⇒ Dans « Nom du projet », entrez « HelloCppMakefile
« . ⇒ Dans « Project type », choisissez « Makefile Project « , « Empty Project » ⇒ Dans « Toolchains », choisissez « Cygwin GCC » ou « MinGW GCC ». Ignorez le message d’avertissement.
Étape 2 : Écrire un programme C++
Cliquez avec le bouton droit de la souris sur le projet ⇒ Nouveau ⇒ Fichier source ⇒ Dans « Fichier source », entrez « Hello.cpp
« . ⇒ Saisissez les codes source suivants :
#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
Étape 3 : Écrire un Makefile
Cliquez avec le bouton droit de la souris sur le projet ⇒ Nouveau ⇒ Fichier ⇒ Dans « Nom du fichier », saisissez « makefile
« . ⇒ Entrez les codes suivants. Prenez note que vous devez utiliser une tabulation (PAS d’espaces) pour l’indentation.
all: Hello.exe clean:rm Hello.o Hello.exe Hello.exe: Hello.og++ -g -o Hello.exe Hello.o Hello.o: Hello.cppg++ -c -g Hello.cpp
Etape 4 : Construire le projet
Cliquez avec le bouton droit de la souris sur le projet ⇒ Construire le projet.
Etape 5 : Exécuter le programme
Cliquez avec le bouton droit de la souris sur le projet ⇒ Exécuter en tant que ⇒ Application C/C++ locale.
Écrivez un makefile pour compiler des programmes-jouets sous un seul projet.
Lisez la documentation
Au minimum, vous DEVRIEZ parcourir le « Guide de l’utilisateur du Workbench » et le « Guide de l’utilisateur du développement C/C++ » d’Eclipse – accessibles via la page « Bienvenue » ou le menu « Aide » d’Eclipse. Cela vous évitera de nombreuses heures d’agonie à essayer de comprendre comment faire certaines choses plus tard.
Débogage de programmes C/C++ dans Eclipse CDT
Pouvoir utiliser un débogueur graphique pour déboguer le programme est crucial en programmation. Cela pourrait vous épargner d’innombrables heures à deviner ce qui s’est mal passé.
Étape 0 : Écrire un programme C++ – Le programme suivant calcule et imprime la factorielle de n
(=1*2*3*...*n
). Le programme, cependant, a une erreur logique et produit une mauvaise réponse pour n
=20
(« The Factorial of 20 is -2102132736
» – un nombre négatif ? !).
1234567891011121314 |
#include <iostream>using namespace std; int main() { int n = 20; int factorial = 1; // n! = 1*2*3...*n for (int i = 1; i <= n; i++) { factorial *= i; } cout << "The Factorial of " << n << " is " << factorial << endl; return 0;} |
The Factorial of 20 is -2102132736
Utilisons le débogueur graphique pour déboguer le programme.
Etape 1 : Définir un point d’arrêt initial – Un point d’arrêt suspend l’exécution du programme pour vous permettre d’examiner les états internes (par ex, valeur des variables) du programme. Avant de démarrer le débogueur, vous devez définir au moins un point d’arrêt pour suspendre l’exécution à l’intérieur du programme. Définissez un point d’arrêt à la fonction main()
en double-cliquant sur la marge gauche de la ligne contenant main()
. Un cercle bleu apparaît dans la marge de gauche indiquant qu’un point d’arrêt est défini à cette ligne.
Étape 2 : Démarrer le débogueur – Cliquez avec le bouton droit de la souris sur le projet (ou utilisez le menu « Exécuter ») ⇒ « Déboguer en tant que » ⇒ « Application C/C++ locale » ⇒ choisissez « Oui » pour passer dans la perspective « Déboguer » (Une perspective est un arrangement particulier de panneaux pour convenir à une certaine tâche de développement telle que l’édition ou le débogage). Le programme commence à s’exécuter mais suspend son opération au point d’arrêt, c’est-à-dire à la fonction main()
.
Comme l’illustre le schéma suivant, la ligne en surbrillance (également pointée par une flèche bleue) indique l’instruction à exécuter à l’étape suivante.
Étape 3 : Step-Over et observation des variables et des sorties – Cliquez sur le bouton « Step Over » (ou sélectionnez « Step Over » dans le menu « Run ») pour parcourir votre programme en une seule étape. À chacune des étapes, examinez la valeur des variables (dans le panneau « Variable ») et les sorties produites par votre programme (dans le panneau « Console »), le cas échéant. Vous pouvez également placer votre curseur sur n’importe quelle variable pour inspecter le contenu de la variable.
Single-step through the program and watching the values of internal variables and the outputs produced is the ultimate mean in debugging programs – because it is exactly how the computer runs your program!
Step 4 : Breakpoint, Run-To-Line, Resume and Terminate – Comme mentionné, un breakpoint suspend l’exécution du programme et vous permet d’examiner les états internes du programme. Pour définir un point d’arrêt sur une instruction particulière, double-cliquez sur la marge gauche de cette ligne (ou sélectionnez « Toggle Breakpoint » dans le menu « Run »).
« Resume » poursuit l’exécution du programme, jusqu’au prochain point d’arrêt, ou jusqu’à la fin du programme.
« Single-step » à travers une boucle avec un grand compte est chronophage. Vous pourriez définir un point d’arrêt à l’instruction immédiatement à l’extérieur de la boucle (par exemple, la ligne 12 du programme ci-dessus), et émettre « Resume » pour terminer la boucle.
Alternativement, vous pouvez placer le curseur sur une instruction particulière, et émettre « Run-To-Line » à partir du menu « Run » pour poursuivre l’exécution jusqu’à la ligne.
« Terminate » termine la session de débogage. Terminez toujours votre session de débogage en cours en utilisant « Terminer » ou « Reprendre » jusqu’à la fin du programme.
Étape 5 : Retour à la perspective C/C++ – Cliquez sur l’icône de la perspective « C/C++ » dans le coin supérieur droit pour revenir à la perspective « C/C++ » pour la suite de la programmation (ou menu « Fenêtre » ⇒ Ouvrir la perspective ⇒ C/C++).
Je ne saurais trop insister sur le fait que la maîtrise de l’utilisation du débogueur est cruciale en programmation. Explorez les fonctionnalités offertes par les débogueurs.
Autres fonctionnalités du débogueur
Modifier la valeur d’une variable : Vous pouvez modifier la valeur d’une variable en saisissant une nouvelle valeur dans le panneau « Variable ». Ceci est pratique pour modifier temporairement le comportement d’un programme, sans modifier le code source.
Step-Into et Step-Return : Pour déboguer une fonction, vous devez utiliser « Step-Into » pour entrer dans la première déclaration de la méthode. Vous pouvez utiliser « Step-Return » pour revenir à l’appelant, n’importe où dans la méthode. Alternativement, vous pourriez définir un point d’arrêt à l’intérieur d’une méthode.
NOTE : Si vous recevez le message d’erreur « Can’t find a source file at /cygdrive/c
… » pendant le débogage, vous devez configurer un mappage entre « /cygdrive/c
» et « c:/
» (en supposant que votre programme dans conservé dans le lecteur c. A partir de « Window » ⇒ « Preferences » ⇒ « C/C++ ». ⇒ « Debug » ⇒ « Common Source Lookup Path », sélectionnez « Add » ⇒ « Path Mapping ».
Tips & Tricks
Lisez les Tips & Tricks d’Eclipse for Java pour obtenir des conseils généraux sur l’utilisation d’Eclipse.
Développement de logiciels C/C++ à l’aide de GCC
- Vous pouvez trouver les commandes utilisées dans Eclipse CDT pour construire le projet à «
<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log
« . - Réglage des include-paths, des library-paths et des bibliothèques : Lors de la construction du programme, le compilateur a besoin des fichiers d’en-tête pour compiler les codes sources ; l’éditeur de liens a besoin des bibliothèques pour résoudre les références externes. Le compilateur recherche dans les « include-paths » les en-têtes spécifiés dans les directives
#include
. L’éditeur de liens recherche dans les « library-paths » les « libraries » nécessaires pour lier le programme. Dans GCC, include-path est spécifié via l’option-Idir
ou la variable d’environnementCPATH
. Le library-path est spécifié via l’option-Ldir
, ou la variable d’environnementLIBRARY_PATH
. La bibliothèquelibxxx.a
est spécifiée via l’option-lxxx
(lettre minuscule'l'
, sans le préfixelib
et l’extension.a
).
Dans Eclipse CDT, vous pouvez définir les chemins d’inclusion, les chemins de bibliothèque et les bibliothèques en cliquant avec le bouton droit de la souris sur le projet ⇒ Propriétés ⇒ C/C++ Général ⇒ Chemins et symboles ⇒ Sous les onglets « Includes », « Library Paths » et « Libraries ». Les paramètres sont applicables au projet sélectionné uniquement.
Pour définir les chemins d’inclusion et les chemins de bibliothèque pour tous les projets, définissez les variables d’environnementCPATH
etLIBRARY_PATH
. Dans Eclipse, choisissez « Fenêtre » ⇒ Préférences ⇒ C/C++ ⇒ Build ⇒ Environnement.
Alternativement, copiez les en-têtes et les bibliothèques dans les répertoires du système, et vous pouvez omettre les chemins d’inclusion et les chemins de bibliothèque. - OpenGL avec GLUT : Pour Cygwin, vous devez installer gcc, g++, gdb, make (sous la catégorie Devel) et opengl, freeglut (sous la catégorie graphics). Les en-têtes
gl.h
,glu.h
,glut.h
sont conservés dans$cygwin\usr\include\w32api\GL
. Utilisez#include <GL/gl__.h>
pour inclure les en-têtes. Les bibliothèqueslibopengl32.a
libglu32.a
etlibglut32.a
sont conservées dans$cygwin\lib\w32api
. Pour spécifier ces bibliothèques lors de l’établissement de liens, utilisez les options-lopengl32
-lglu32
-lglut32
(sans le préfixelib
et l’extension.a
). - OpenGL avec SDL : Téléchargez SDL à partir de http://www.libsdl.org. Choisissez Bibliothèques de développement ⇒ win32 ⇒ mingw32 ⇒ Dézipper. Copiez le répertoire des en-têtes
SDL
(sousinclude
) dans$cygwin\usr\include\w32api
; copiez tous les fichiers de bibliothèque danslib
dans$cygwin\lib\w32api
; copiez la bibliothèque d’exécutionSDL.dll
(sousbin
) dansWindows/System32
. Dans votre programme, incluez ces deux en-têtes :#include <SDL/sdl.h>
et#include <SDL/sdl_opengl.h>
. Pour la liaison, ajoutez ces bibliothèques :-lSDL
-lSDLmain
. - #pragma Comment Directive : pragma comment directive, par exemple,
#pragma comment(lib, "opengl32.lib")
, est souvent utilisé pour inclure une bibliothèque particulière (même que l’option-l
). Cette directive dépendante du système fonctionne sur le compilateur de Windows, mais PAS dans GCC. - Erreur « multiple target patterns » : Il y a un problème avec GNU make (à
$Cygwin\bin\make.exe
). Remplacé par cette copie @ http://www.cmake.org/files/cygwin/make.exe. - fflush(stdout) : La bibliothèque gcc utilise des entrées/sorties en mémoire tampon (conformément à la spécification C). La sortie n’est écrite sur le flux de sortie qu’après un caractère de nouvelle ligne. Vous pouvez vider la sortie avec un
fflush()
. - Le nom du projet ne doit pas inclure le mot « setup » : Si vous nommez votre projet C/C++ avec un nom comprenant le mot «
setup
« , alors le «*setup*.exe
» résultant déclenchera l’UAC (User Authorization Control) et nécessitera le droit d’administrateur pour s’exécuter. (Cela m’a pris quelques heures à comprendre ! Essayez de renommer un «hello.exe
» en «mysetup.exe
« .)
L’entrée/sortie de fichier dans Eclipse
Référer à Eclipse pour l’entrée/sortie de fichier de Java.
Laisser un commentaire