Eclipse 4.3 (Kepler) för C/C++-programmering
On november 9, 2021 by adminEclipse är en integrerad utvecklingsmiljö (IDE) med öppen källkod som stöds av IBM. Huvudwebbplatsen är @ www.eclipse.org. Eclipse är populärt för utveckling av Java-projekt. Den stöder också utveckling av C/C++, PHP, Python, Perl och andra webbprojekt via utbyggbara tilläggsmoduler. Eclipse är plattformsoberoende och körs under Windows, Linux och Mac OS.
Hur man installerar Eclipse C/C++ Development Tool (CDT) 8.1.2 för Eclipse 4.2.2 (Juno)
Steg 0: Installera MinGW GCC eller Cygwin GCC
För att använda Eclipse för C/C++-programmering behöver du en C/C++-kompilator. På Windows kan du installera antingen MinGW GCC eller Cygwin GCC. Välj MinGW om du är osäker, eftersom MinGW är lättare och enklare att installera, men har färre funktioner.
- MinGW GCC: Läs ”Hur man installerar MinGW”.
- Cygwin GCC: Läs ”Hur man installerar Cygwin”. Se till att du väljer paketen ”
gcc
”, ”g++
”, ”gdb
” och ”make
” under ”Devel
”. (Development) – dessa paket ingår inte i standardinstallationen.
Steg 1: Installera Eclipse C/C++ Development Tool (CDT)
Två sätt att installera CDT, beroende på om du tidigare har installerat en Eclipse:
- Om du redan har installerat ”Eclipse for Java Developers” eller andra Eclipse-paket kan du installera CDT-plugin på följande sätt:
Starta Eclipse ⇒ Hjälp ⇒ Installera ny programvara ⇒ I fältet ”Work with” (Arbeta med), dra ner rullgardinsmenyn och välj ”Kepler – http://download.eclipse.org/releases/kepler”. (eller juno för Eclipse 4.2; eller helios för Eclipse 3.7).
I fältet ”Name” expanderar du noden ”Programming Language” ⇒ Markera ”C/C++ Development Tools” ⇒ ”Next” ⇒ … ⇒ ”Finish”. - Om du inte har installerat något Eclipse-paket kan du ladda ner ”Eclipse IDE for C/C++ Developers” från http://www.eclipse.org/downloads och packa upp den nedladdade filen till en valfri katalog.
Steg 2: Konfigurering
Du behöver INTE göra någon konfiguration så länge som Cygwin- eller MinGW-binärfilerna finns med i miljövariabeln PATH
. CDT söker i PATH
för att hitta C/C++-kompilatorerna.
Skrivning av ditt första C/C++-program i Eclipse
C++-program
Steg 0: Starta Eclipse
- Starta Eclipse genom att köra ”
eclipse.exe
” i den installerade Eclipse-katalogen. - Välj en lämplig katalog för din arbetsyta (t.ex, där du vill spara dina arbeten).
- Om ”välkomstskärmen” visas, stänger du den genom att klicka på knappen ”close” (stäng).
Steg 1: Skapa ett nytt C++-projekt
För varje C++-program måste du skapa ett projekt för att spara alla källkoder, objektfiler, körbara filer och relevanta resurser.
För att skapa ett nytt C++-projekt:
- Välj ”File”-menyn ⇒ ”New” ⇒ Project… ⇒ C/C++ ⇒ C++-projekt.
- Dialogen ”C++ Project” öppnas.
- I fältet ”Project name” (projektnamn) anger du ”
FirstProject
”. - I rutan ”Project Types” (projekttyper) väljer du ”Executable” (exekverbar) ⇒ ”Empty Project” (tomt projekt).
- I rutan ”Toolchains” (verktygskedjor) väljer du din kompilator, t.ex, ”Cygwin GCC” eller ”MinGW GCC” ⇒ Nästa.
- I fältet ”Project name” (projektnamn) anger du ”
- Dialogen ”Select Configurations” visas. Välj både ”Debug” och ”Release” ⇒ Avsluta.
Steg 2: Skriv ett Hello-world C++-program
- I ”Projektutforskaren” (panelen längst till vänster) ⇒ Högerklicka på ”
FirstProject
”. (eller använd menyn ”File”) ⇒ New ⇒ Source File. - Dialogen ”New Source File” öppnas.
- I fältet ”Source file” anger du ”
Hello.cpp
”. - Klicka på ”Finish”.
- I fältet ”Source file” anger du ”
- Källfilen ”
Hello.cpp
” öppnas på redigeringsfältet (dubbelklicka på ”test.cpp
” för att öppna vid behov). Ange följande koder:#include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Om ”Unresolved Inclusion Error”
Om felet ”unresolved inclusion” visas bredvid #include
-angivelsen är ”include paths for headers” inte korrekt inställda. Välj menyn ”Project” ⇒ Properties ⇒ C/C++ General ⇒ Paths and Symbols ⇒ Under fliken ”Includes”:
För Cygwin GCC:
- ”Lägg till” följande kataloger till ”GNU C”, där
$CYGWIN_HOME
är din installerade Cygwin-katalog:$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
- ”Lägg till” följande kataloger till ”GNU C++”, där
$CYGWIN_HOME
är din installerade Cygwin-katalog:$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
För MinGW GCC:
- ”Lägg till” följande kataloger till ”GNU C”, där
$MINGW_HOME
är din MinGW-installationskatalog:$MINGW_HOME\lib\gcc\mingw32.6.x\include
$MINGW_HOME\include
$MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
- ”Lägg till” följande kataloger till ”GNU C++”, där
$MINGW_HOME
är din installerade Cygwin-katalog:$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
OBSERVERA: För att hitta sökvägar till rubrikerna kan du göra en sökning på rubriker som ”stdio.h
”. (för C) och ”iostream
”. (för C++) under den installerade katalogen för Cygwin eller MinGW.
libmpfr4
” i cygwin.Steg 3: Kompilera/Bygg
Högerklicka på ”FirstProject
” (eller använd menyn ”Project”) ⇒ välj ”Build Project” för att kompilera och länka programmet.
Steg 4: Kör
Högerklicka på ”FirstProject
” för att köra programmet. (eller någonstans på källkoden ”test.cpp
”, eller välj menyn ”Kör”) ⇒ Kör som ⇒ Lokalt C/C++-program ⇒ (Om du frågar, välj Cygwins gdb-debugger) ⇒ Utsignalen ”Hello, world!” visas på panelen ”Console”.
NOTAN: Du måste skapa ett nytt C++-projekt för VARJE programmeringsproblem. Detta är rörigt för att skriva leksaksprogram!
C-program
Följ samma steg som ovan. Skapa ett ”C-projekt” (i stället för ett ”C++-projekt”). Prova följande Hello-world-program (kallat ”Hello.c
”).
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0;}
C++-program med makefile
I de tidigare exemplen använde vi s.k. managed-make där Eclipse automatiskt genererade en makefile för att bygga programmet. Vi kan också välja att skriva vår egen makefile för att få fullständig kontroll över byggprocessen.
Steg 1: Skapa ett C++ Makefile-projekt
Från ”File”-menyn ⇒ New ⇒ Project… ⇒ C/C++ ⇒ C++-projekt ⇒ Ange ”HelloCppMakefile
” i ”Projektnamn”. ⇒ I ”Project type” väljer du ”Makefile Project ”, ”Empty Project” ⇒ I ”Toolchains” väljer du ”Cygwin GCC” eller ”MinGW GCC”. Ignorera varningsmeddelandet.
Steg 2: Skriv ett C++-program
Högerklicka på projektet ⇒ New ⇒ New ⇒ Source File ⇒ I ”Source file”, ange ”Hello.cpp
”. ⇒ Ange följande källkoder:
#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
Steg 3: Skriv en Makefile
Högerklicka på projektet ⇒ New ⇒ File ⇒ File ⇒ Ange ”makefile
” i ”File name”. ⇒ Ange följande koder. Observera att du måste använda en tabb (INTE mellanslag) som indrag.
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
Steg 4: Bygg projektet
Högerklicka på projektet ⇒ Bygg projektet.
Steg 5: Kör programmet
Högerklicka på projektet ⇒ Kör som ⇒ Lokal C/C++-applikation.
Skriv en makefile för att kompilera leksaksprogram under ett projekt.
Läs dokumentationen
Du SKA åtminstone bläddra igenom Eclipses ”Workbench User Guide” och ”C/C++ Development User Guide” – åtkomliga via Eclipses ”Welcome”-sida eller ”Help”-meny. Detta kommer att bespara dig många plågsamma timmar med att försöka lista ut hur du ska göra vissa saker senare.
Buggning av C/C++-program i Eclipse CDT
Att kunna använda en grafisk felsökare för att felsöka program är avgörande vid programmering. Det kan spara dig otaliga timmar med att gissa vad som gick fel.
Steg 0: Skriv ett C++-program – Följande program beräknar och skriver ut faktorn för n
(=1*2*3*...*n
). Programmet har dock ett logiskt fel och ger fel svar för n
=20
(”The Factorial of 20 is -2102132736
” – ett negativt tal?!).
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
Låt oss använda den grafiska felsökaren för att felsöka programmet.
Steg 1: Ställ in en inledande brytpunkt – En brytpunkt avbryter programmets exekvering så att du kan undersöka de interna tillstånden (t.ex, värdet på variabler) i programmet. Innan du startar felsökaren måste du ställa in minst en brytpunkt för att avbryta exekveringen inne i programmet. Sätt en brytpunkt vid funktionen main()
genom att dubbelklicka på vänstermarginalen på den rad som innehåller main()
. En blå cirkel visas i vänstermarginalen som visar att en brytpunkt är inställd på den linjen.
Steg 2: Starta felsökaren – Högerklicka på projektet (eller använd ”Kör”-menyn) ⇒ ”Felsök som” ⇒ ”Lokal C/C++-applikation” ⇒ välj ”Ja” för att växla in i ”Felsök”-perspektivet (Ett perspektiv är ett särskilt arrangemang av paneler för att passa en viss utvecklingsuppgift, till exempel redigering eller felsökning). Programmet börjar exekveras men avbryter sin verksamhet vid brytpunkten, dvs. main()
-funktionen.
Som illustreras i följande diagram visar den markerade linjen (som också pekas ut av en blå pil) det uttalande som ska exekveras i nästa steg.
Steg 3: Gå över och titta på variablerna och utgångarna – Klicka på knappen ”Gå över” (eller välj ”Gå över” i menyn ”Kör”) för att gå igenom ditt program i ett steg. Undersök vid varje steg värdet på variablerna (i panelen ”Variable”) och de utdata som programmet producerar (i panelen ”Console”), om det finns några. Du kan också placera markören på en variabel för att inspektera variabelns innehåll.
Single-stepping genom programmet och titta på värdena för interna variabler och de utdata som produceras är det ultimata sättet att felsöka program – eftersom det är exakt så som datorn kör ditt program!
Steg 4: Brytpunkt, Kör-till-linjen, Återuppta och Avsluta – Som nämnts avbryter en brytpunkt programmets exekvering och låter dig undersöka programmets interna tillstånd. För att ställa in en brytpunkt på ett visst uttalande dubbelklickar du på vänstermarginalen på den linjen (eller väljer ”Toggle Breakpoint” (växla brytpunkt) från menyn ”Run” (kör)).
”Resume” (återuppta) fortsätter programutförandet fram till nästa brytpunkt eller till slutet av programmet.
”Single-step” (enstegsutförande) genom en slinga med ett stort antal är tidskrävande. Du kan sätta en brytpunkt vid uttalandet omedelbart utanför slingan (t.ex. rad 12 i ovanstående program) och ge ”Resume” för att slutföra slingan.
Alternativt kan du placera markören på ett visst uttalande och ge ”Run-To-Line” från ”Run”-menyn för att fortsätta exekveringen fram till linjen.
”Terminate” avslutar felsökningssessionen. Avsluta alltid din aktuella felsökningssession med ”Terminate” eller ”Resume” till slutet av programmet.
Steg 5: Växla tillbaka till C/C++-perspektivet – Klicka på ikonen för ”C/C++”-perspektivet i det övre högra hörnet för att växla tillbaka till ”C/C++”-perspektivet för fortsatt programmering (eller ”Window”-menyn ⇒ Open Perspective ⇒ C/C++).
Jag kan inte betona mer att behärska användandet av felsökningsverktyg är avgörande vid programmering. Utforska de funktioner som debuggerna erbjuder.
Andra debuggerfunktioner
Modifiera värdet på en variabel: Du kan ändra värdet på en variabel genom att skriva in ett nytt värde i panelen ”Variabel”. Detta är praktiskt för att tillfälligt ändra ett programs beteende utan att ändra källkoden.
Step-Into och Step-Return: För att felsöka en funktion måste du använda ”Step-Into” för att gå in i det första uttalandet i metoden. Du kan använda ”Step-Return” för att återgå till anroparen, var som helst i metoden. Alternativt kan du sätta en brytpunkt inne i en metod.
OBS: Om du får felmeddelandet ”Can’t find a source file at /cygdrive/c
…” (Kan inte hitta en källfil på /cygdrive/c
…) under felsökning måste du konfigurera en mappning mellan ”/cygdrive/c
” och ”c:/
” (under förutsättning att ditt program sparas i enhet c. Från ”Window” ⇒ ”Preferences” ⇒ ”C/C++” ⇒ ”Debug” ⇒ ”Common Source Lookup Path”, välj ”Add” ⇒ ”Path Mapping”.
Tips & Tricks
Läs Eclipse for Javas Tips & Tricks för allmänna tips om hur du använder Eclipse.
C/C++ Software Development Using GCC
- Du hittar de kommandon som används i Eclipse CDT för att bygga projektet på ”
<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log
”. - Inställning av include-paths, library-paths och libraries: När programmet byggs behöver kompilatorn headerfilerna för att kompilera källkoderna och länkaren behöver biblioteken för att lösa externa referenser. Kompilatorn söker i ”include-paths” efter de headers som anges i
#include
-direktiven. Linkern söker i ”library-paths” efter de ”bibliotek” som behövs för att länka programmet. I GCC anges include-path via alternativet-Idir
eller miljövariabelnCPATH
. Library-path anges via alternativet-Ldir
eller miljövariabelnLIBRARY_PATH
. Biblioteketlibxxx.a
anges via alternativet-lxxx
(liten bokstav'l'
, utan prefixetlib
och tillägget.a
).
I Eclipse CDT kan du ställa in inkluderingsvägar, biblioteksvägar och bibliotek genom att högerklicka på projektet ⇒ Egenskaper ⇒ C/C++ Allmänt ⇒ Vägar och symboler ⇒ Under flikarna ”Includes”, ”Library Paths” och ”Libraries”. Inställningarna gäller endast för det valda projektet.
För att ställa in inkluderingsvägar och bibliotekssökvägar för alla projekt ställer du in miljövariablernaCPATH
ochLIBRARY_PATH
. I Eclipse väljer du ”Window” ⇒ Preferences ⇒ C/C++ ⇒ Build ⇒ Environment.
Alternativt kan du kopiera headers och bibliotek till systemkataloger och då kan du utelämna include-paths och library-paths. - OpenGL with GLUT: För Cygwin måste du installera gcc, g++, gdb, make (under kategorin Devel) och opengl, freeglut (under kategorin graphics). Huvudet
gl.h
,glu.h
,glut.h
finns i$cygwin\usr\include\w32api\GL
. Använd#include <GL/gl__.h>
för att inkludera rubrikerna. Bibliotekenlibopengl32.a
libglu32.a
ochlibglut32.a
finns i$cygwin\lib\w32api
. För att ange dessa bibliotek vid länkningen använder du-lopengl32
-lglu32
-lglut32
alternativ (utan prefixetlib
och tillägget.a
). - OpenGL med SDL: Ladda ner SDL från http://www.libsdl.org. Välj Development Libraries ⇒ win32 ⇒ mingw32 ⇒ Unzip. Kopiera headers-katalogen
SDL
(underinclude
) till$cygwin\usr\include\w32api
; kopiera alla biblioteksfiler ilib
till$cygwin\lib\w32api
; kopiera körtidsbiblioteketSDL.dll
(underbin
) tillWindows/System32
. Inkludera dessa två headers i ditt program:#include <SDL/sdl.h>
och#include <SDL/sdl_opengl.h>
. För länkning lägger du till de här biblioteken:-lSDL
-lSDLmain
. - #pragma kommentardirektiv: Pragma kommentardirektiv, t.ex.
#pragma comment(lib, "opengl32.lib")
, används ofta för att inkludera ett visst bibliotek (samma som alternativet-l
). Detta systemberoende direktiv fungerar i Windows kompilator, men INTE i GCC. - Fel ”multiple target patterns”: Det finns ett problem med GNU make (vid
$Cygwin\bin\make.exe
). Ersatt av denna kopia @ http://www.cmake.org/files/cygwin/make.exe. - fflush(stdout): gcc-biblioteket använder buffered I/O (i enlighet med C-specifikationen). Utdata skrivs endast till utdataströmmen efter en ny rad. Du kan spola utmatningen med en
fflush()
. - Projektnamnet får inte innehålla ordet ”setup”: Om du namnger ditt C/C++-projekt med ett namn som innehåller ordet ”
setup
” kommer det resulterande ”*setup*.exe
” att utlösa UAC (User Authorization Control) och kräva administratörsrättigheter för att köras. (Det tog mig några timmar att komma på detta! Prova att byta namn på en ”hello.exe
” till ”mysetup.exe
”.)
File I/O i Eclipse
Hänvisa till Eclipse för Java’s File IO.
Lämna ett svar