Eclipse 4.3 (Kepler) pro programování v jazyce C/C++
On 9 listopadu, 2021 by adminEclipse je open-source integrované vývojové prostředí (IDE) podporované společností IBM. Mateřská stránka je @ www.eclipse.org. Eclipse je populární pro vývoj projektů v jazyce Java. Podporuje také vývoj projektů v jazycích C/C++, PHP, Python, Perl a dalších webových aplikací prostřednictvím rozšiřitelných zásuvných modulů. Eclipse je multiplatformní a běží pod systémy Windows, Linux a Mac OS.
Jak nainstalovat Eclipse C/C++ Development Tool (CDT) 8.1.2 pro Eclipse 4.2.2 (Juno)
Krok 0: Nainstalujte MinGW GCC nebo Cygwin GCC
Chcete-li používat Eclipse pro programování v jazyce C/C++, potřebujete kompilátor C/C++. V systému Windows můžete nainstalovat buď MinGW GCC, nebo Cygwin GCC. Pokud si nejste jisti, zvolte MinGW, protože MinGW je lehčí a snadněji se instaluje, ale má méně funkcí.
- MinGW GCC:
- Cygwin GCC: Přečtěte si „Jak nainstalovat MinGW“: Přečtěte si „Jak nainstalovat Cygwin“. Ujistěte se, že jste vybrali balíčky „
gcc
„, „g++
„, „gdb
“ a „make
“ v části „Devel
„. (Vývoj) – tyto balíčky nejsou součástí výchozí instalace.
Krok 1: Instalace vývojového nástroje Eclipse C/C++ (CDT)
Dva způsoby instalace CDT v závislosti na tom, zda jste již dříve nainstalovali Eclipse:
- Pokud jste již nainstalovali „Eclipse for Java Developers“ nebo jiné balíčky Eclipse, můžete zásuvný modul CDT nainstalovat následujícím způsobem:
Spustit Eclipse ⇒ Nápověda ⇒ Instalovat nový software ⇒ V poli „Pracovat s“ stáhněte rozbalovací nabídku a vyberte „Kepler – http://download.eclipse.org/releases/kepler“. (nebo juno pro Eclipse 4.2; nebo helios pro Eclipse 3.7).
V poli „Název“ rozbalte uzel „Programovací jazyk“ ⇒ zaškrtněte „C/C++ Development Tools“ ⇒ „Další“ ⇒ … ⇒ „Dokončit“. - Pokud nemáte nainstalovaný žádný balíček Eclipse, můžete si stáhnout „Eclipse IDE for C/C++ Developers“ z http://www.eclipse.org/downloads a stažený soubor rozbalit do zvoleného adresáře.
Krok 2: Konfigurace
Nemusíte provádět žádnou konfiguraci, pokud jsou binární soubory Cygwin nebo MinGW zahrnuty v proměnné prostředí PATH
. CDT prohledá PATH
, aby objevil kompilátory C/C++.
Napsání prvního programu v C/C++ v Eclipse
Program C++
Krok 0: Spusťte Eclipse
- Spustíte Eclipse spuštěním „
eclipse.exe
“ v nainstalovaném adresáři Eclipse. - Vyberte vhodný adresář pro pracovní plochu (tj, kam chcete uložit své práce).
- Pokud se zobrazí „uvítací“ obrazovka, zavřete ji klepnutím na tlačítko „zavřít“.
Krok 1: Vytvoření nového projektu C++
Pro každou aplikaci C++ je třeba vytvořit projekt, ve kterém budou uloženy všechny zdrojové kódy, objektové soubory, spustitelné soubory a příslušné zdroje.
Pro vytvoření nového projektu C++:
- Vyberte nabídku „Soubor“ ⇒ „Nový“ ⇒ Projekt…. ⇒ C/C++ ⇒ Projekt C++.
- Otevře se dialogové okno „Projekt C++“.
- V poli „Název projektu“ zadejte „
FirstProject
„. - V poli „Typy projektu“ vyberte „Spustitelný“ ⇒ „Prázdný projekt“.
- V poli „Řetězce nástrojů“ vyberte svůj překladač, např, „Cygwin GCC“ nebo „MinGW GCC“ ⇒ Další.
- V poli „Název projektu“ zadejte „
- Zobrazí se dialogové okno „Výběr konfigurací“. Vyberte „Debug“ i „Release“ ⇒ Dokončit.
Krok 2: Napište program Hello-world C++
- V „Project Explorer“ (panel úplně vlevo) ⇒ Klepněte pravým tlačítkem na „
FirstProject
„. (nebo použijte nabídku „Soubor“) ⇒ Nový ⇒ Zdrojový soubor. - Otevře se dialogové okno „Nový zdrojový soubor“.
- Do pole „Zdrojový soubor“ zadejte „
Hello.cpp
„. - Klikněte na „Dokončit“.
- Do pole „Zdrojový soubor“ zadejte „
- Na panelu editoru se otevře zdrojový soubor „
Hello.cpp
“ (v případě potřeby dvakrát klikněte na „test.cpp
„). Zadejte následující kódy:#include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Pokud se objeví „Unresolved Inclusion Error“
Pokud se u příkazu #include
objeví chyba „unresolved inclusion“, nejsou správně nastaveny „include paths for headers“. Vyberte nabídku „Projekt“ ⇒ Vlastnosti ⇒ C/C++ Obecné ⇒ Cesty a symboly ⇒ Na kartě „Includes“:
Pro Cygwin GCC:
- „Přidejte“ následující adresáře do „GNU C“, kde
$CYGWIN_HOME
je adresář nainstalovaného Cygwinu:$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
- „Přidejte“ následující adresáře do „GNU C++“, kde
$CYGWIN_HOME
je váš nainstalovaný adresář 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
Pro MinGW GCC:
- „Přidejte“ následující adresáře do „GNU C“, kde
$MINGW_HOME
je adresář nainstalovaného MinGW:$MINGW_HOME\lib\gcc\mingw32.6.x\include
$MINGW_HOME\include
$MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
- „Přidejte“ následující adresáře do „GNU C++“, kde
$MINGW_HOME
je váš nainstalovaný adresář 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
POZNÁMKA: Chcete-li najít cesty k hlavičkám, můžete provést vyhledávání v hlavičkách, například „stdio.h
„. (pro C) a „iostream
„. (pro C++) v nainstalovaném adresáři Cygwin nebo MinGW.
libmpfr4
“ do cygwinu.Krok 3: Kompilace / sestavení
Klikněte pravým tlačítkem myši na „FirstProject
„. (nebo použijte nabídku „Project“) ⇒ zvolte „Build Project“ pro kompilaci a propojení programu.
Krok 4: Spustit
Pro spuštění programu klikněte pravým tlačítkem myši na „FirstProject
„. (nebo kdekoli na zdrojovém kódu „test.cpp
„, případně zvolte nabídku „Spustit“) ⇒ Spustit jako ⇒ Lokální aplikace C/C++ ⇒ (Pokud se zeptáte, zvolte ladicí program gdb Cygwin) ⇒ Na panelu „Konzola“ se objeví výstup „Hello, world!“.
POZNÁMKA: Pro KAŽDÝ programovací problém musíte vytvořit nový projekt C++. Při psaní programů na hraní je to nepořádek!
Program C
Postupujte stejně jako výše. Vytvořte „Projekt C“ (místo „Projekt C++“). Vyzkoušejte následující program Hello-world (s názvem „Hello.c
„).
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0;}
C++ Program s Makefile
V předchozích příkladech jsme použili tzv. managed-make, kdy Eclipse automaticky vygeneroval makefile pro sestavení programu. Můžeme se také rozhodnout napsat vlastní makefile a mít tak proces sestavování plně pod kontrolou.
Krok 1: Vytvoření projektu s makefile C++
Z nabídky „Soubor“ ⇒ Nový ⇒ Projekt…. ⇒ C/C++ ⇒ Projekt C++ ⇒ Do pole „Název projektu“ zadejte „HelloCppMakefile
„. ⇒ V poli „Typ projektu“ vyberte „Makefile Project „, „Empty Project“ ⇒ V poli „Toolchains“ vyberte „Cygwin GCC“ nebo „MinGW GCC“. Ignorujte varovné hlášení.
Krok 2: Napište program v jazyce C++
Klikněte pravým tlačítkem myši na projekt ⇒ Nový ⇒ Zdrojový soubor ⇒ Do pole „Zdrojový soubor“ zadejte „Hello.cpp
„. ⇒ Zadejte následující zdrojové kódy:
#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
Krok 3: Napište Makefile
Klikněte pravým tlačítkem myši na projekt ⇒ Nový ⇒ Soubor ⇒ Do pole „Název souboru“ zadejte „makefile
„. ⇒ Zadejte následující kódy. Všimněte si, že pro odsazení musíte použít tabulátor (NE mezerník).
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
Krok 4: Sestavte projekt
Pravým tlačítkem myši klikněte na projekt ⇒ Sestavte projekt.
Krok 5: Spusťte program
Pravým tlačítkem myši klikněte na projekt ⇒ Spustit jako ⇒ Lokální aplikace C/C++.
Napište makefile, abyste mohli zkompilovat toy-programy v rámci jednoho projektu.
Přečtěte si dokumentaci
Minimálně byste si měli projít „Uživatelskou příručku k pracovnímu stolu“ a „Uživatelskou příručku pro vývoj v jazyce C/C++“ v Eclipse – dostupné přes stránku „Vítejte“ nebo nabídku „Nápověda“ v Eclipse. Ušetříte si tak mnoho mučivých hodin, kdy se budete později snažit zjistit, jak některé věci udělat.
Debugování programů v jazyce C/C++ v Eclipse CDT
Umění používat grafický debugger k ladění programu je při programování klíčové. Může vám ušetřit nespočet hodin hádání, co se pokazilo.
Krok 0: Napište program v C++ – Následující program vypočítá a vypíše faktoriál n
(=1*2*3*...*n
). Program má však logickou chybu a vyprodukuje špatnou odpověď pro n
=20
(„The Factorial of 20 is -2102132736
“ – záporné číslo?!).
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
Použijeme grafický debugger k ladění programu.
Krok 1: Nastavení počátečního bodu přerušení – Bod přerušení pozastaví provádění programu, abyste mohli prozkoumat vnitřní stavy (např, hodnoty proměnných) programu. Před spuštěním ladicího programu musíte nastavit alespoň jeden bod přerušení, který pozastaví provádění uvnitř programu. Bod přerušení nastavte na funkci main()
poklepáním na levý okraj řádku obsahujícího main()
. V levém okraji se objeví modré kolečko, které signalizuje, že na tomto řádku je nastaven bod přerušení.
Krok 2: Spuštění ladicího programu – Klikněte pravým tlačítkem myši na projekt (nebo použijte nabídku „Spustit“) ⇒ „Ladit jako“ ⇒ „Místní aplikace C/C++“ ⇒ zvolte „Ano“ pro přepnutí do perspektivy „Ladění“ (Perspektiva je určité uspořádání panelů, které vyhovuje určité vývojové úloze, například úpravám nebo ladění). Program se začne provádět, ale pozastaví svou činnost v bodě přerušení, tj. ve funkci main()
.
Jak je znázorněno na následujícím obrázku, zvýrazněný řádek (na který ukazuje také modrá šipka) označuje příkaz, který se má provést v dalším kroku.
Krok 3: Krok za krokem a sledování proměnných a výstupů – Klepnutím na tlačítko „Krok za krokem“ (nebo výběrem „Krok za krokem“ z nabídky „Spustit“) projdete program v jednom kroku. V každém kroku zkoumejte hodnoty proměnných (v panelu „Variable“) a případné výstupy vytvořené vaším programem (v panelu „Console“). Můžete také umístit kurzor na libovolnou proměnnou a zkontrolovat její obsah.
Jednokrokové procházení programem a sledování hodnot vnitřních proměnných a produkovaných výstupů je nejlepším prostředkem při ladění programů – přesně tak totiž počítač váš program spouští!
Krok 4: Breakpoint, Run-To-Line, Resume a Terminate – Jak již bylo zmíněno, breakpoint pozastaví provádění programu a umožní vám zkoumat vnitřní stavy programu. Chcete-li nastavit bod přerušení na určitý příkaz, poklepejte na levý okraj tohoto řádku (nebo vyberte „Toggle Breakpoint“ z nabídky „Run“).
„Resume“ pokračuje v provádění programu až do dalšího bodu přerušení nebo do konce programu.
„Single-step“ prochází smyčkou s velkým počtem je časově náročný. Můžete nastavit bod přerušení na příkaz bezprostředně za smyčkou (např. řádek 12 výše uvedeného programu) a vydat příkaz „Resume“ pro dokončení smyčky.
Případně můžete umístit kurzor na konkrétní příkaz a vydat příkaz „Run-To-Line“ z nabídky „Run“ pro pokračování ve vykonávání až k tomuto řádku.
„Terminate“ ukončí relaci ladění. Aktuální relaci ladění vždy ukončete pomocí „Terminate“ nebo „Resume“ až do konce programu.
Krok 5: Přepnutí zpět do perspektivy C/C++ – Kliknutím na ikonu perspektivy „C/C++“ v pravém horním rohu se přepnete zpět do perspektivy „C/C++“ pro další programování (nebo nabídka „Okno“ ⇒ Otevřít perspektivu ⇒ C/C++).
Mohu jen zdůraznit, že zvládnutí používání ladicího programu je při programování klíčové. Prozkoumejte funkce, které debuggery poskytují.
Další funkce debuggeru
Změna hodnoty proměnné: Hodnotu proměnné můžete upravit zadáním nové hodnoty na panelu „Proměnná“. To je užitečné pro dočasnou úpravu chování programu, aniž byste museli měnit zdrojový kód.
Krok-do a krok-návrat: Pro ladění funkce je třeba použít funkci „Step-Into“, která vstoupí do prvního příkazu metody. Pro návrat zpět k volajícímu můžete použít „Step-Return“, a to kdekoli v rámci metody. Případně můžete nastavit bod přerušení uvnitř metody.
POZNÁMKA: Pokud během ladění obdržíte chybové hlášení „Can’t find a source file at /cygdrive/c
…“, musíte nastavit mapování mezi „/cygdrive/c
“ a „c:/
“ (za předpokladu, že váš program v uložen v jednotce c. Z „Window“ ⇒ „Preferences“ ⇒ „C/C++“. ⇒ „Debug“ ⇒ „Common Source Lookup Path“, vyberte „Add“ ⇒ „Path Mapping“.
Tipy & Tricks
Přečtěte si Eclipse for Java’s Tips & Tricks pro obecné tipy při používání Eclipse.
Vývoj softwaru C/C++ pomocí GCC
- Příkazy používané v Eclipse CDT pro sestavení projektu najdete na adrese „
<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log
„. - Nastavení include-paths, library-paths a knihoven: Při sestavování programu potřebuje překladač hlavičkové soubory pro kompilaci zdrojových kódů; linker potřebuje knihovny pro řešení externích odkazů. Překladač prohledává „include-paths“ pro hlavičkové soubory uvedené v direktivách
#include
. Linker hledá v „library-paths“ „knihovny“ potřebné k linkování programu. V GCC se „include-path“ zadává pomocí volby-Idir
nebo proměnné prostředíCPATH
. Library-path se zadává prostřednictvím volby-Ldir
nebo proměnné prostředíLIBRARY_PATH
. Knihovnalibxxx.a
se zadává prostřednictvím volby-lxxx
(malé písmeno'l'
, bez předponylib
a přípony.a
).
V Eclipse CDT lze nastavit cesty include, cesty knihoven a knihovny kliknutím pravým tlačítkem myši na projekt ⇒ Vlastnosti ⇒ C/C++ Obecné ⇒ Cesty a symboly ⇒ Pod záložkami „Includes“, „Library Paths“ a „Libraries“. Nastavení platí pouze pro vybraný projekt.
Chcete-li nastavit cesty include a cesty knihoven pro všechny projekty, nastavte proměnné prostředíCPATH
aLIBRARY_PATH
. V Eclipse zvolte „Okno“ ⇒ Předvolby ⇒ C/C++ ⇒ Sestavení ⇒ Prostředí.
Případně zkopírujte hlavičky a knihovny do systémových adresářů a můžete vynechat include-paths a library-paths. - OpenGL s GLUT: Pro Cygwin je třeba nainstalovat gcc, g++, gdb, make (v kategorii Devel) a opengl, freeglut (v kategorii graphics). Hlavičky
gl.h
,glu.h
,glut.h
jsou uloženy v$cygwin\usr\include\w32api\GL
. Pro zařazení hlaviček použijte#include <GL/gl__.h>
. Knihovnylibopengl32.a
libglu32.a
alibglut32.a
jsou uchovávány v$cygwin\lib\w32api
. Pro zadání těchto knihoven při linkování použijte volby-lopengl32
-lglu32
-lglut32
(bez předponylib
a rozšíření.a
). - OpenGL s SDL: Stáhněte SDL z http://www.libsdl.org. Zvolte Vývojové knihovny ⇒ win32 ⇒ mingw32 ⇒ Rozbalit. Zkopírujte adresář hlaviček
SDL
(podinclude
) do$cygwin\usr\include\w32api
; zkopírujte všechny soubory knihoven vlib
do$cygwin\lib\w32api
; zkopírujte knihovnu run-timeSDL.dll
(podbin
) doWindows/System32
. Do svého programu zahrňte tyto dvě hlavičky:#include <SDL/sdl.h>
a#include <SDL/sdl_opengl.h>
. Pro linkování přidejte tyto knihovny:-lSDL
-lSDLmain
. - #pragma Komentářová směrnice: Pro zařazení konkrétní knihovny se často používá komentářová směrnice pragma, například
#pragma comment(lib, "opengl32.lib")
(stejně jako volba-l
). Tato systémově závislá direktiva funguje v překladači Windows, ale NE v GCC. - Chyba „více cílových vzorů“: Je zde problém s GNU make (na
$Cygwin\bin\make.exe
). Nahrazeno touto kopií @ http://www.cmake.org/files/cygwin/make.exe. - fflush(stdout): Knihovna gcc používá buffered I/O (v souladu se specifikací jazyka C). Výstup se vypíše do výstupního proudu až po znaku nového řádku. Výstup můžete spláchnout pomocí
fflush()
. - Název projektu nesmí obsahovat slovo „setup“: Pokud projekt v jazyce C/C++ pojmenujete názvem obsahujícím slovo „
setup
„, pak výsledný projekt „*setup*.exe
“ spustí UAC (User Authorization Control) a ke spuštění bude vyžadovat práva správce. (Trvalo mi několik hodin, než jsem na to přišel! Zkuste přejmenovat „hello.exe
“ na „mysetup.exe
„.)
Souborové vstupy a výstupy v Eclipse
Odkaz na Eclipse pro souborové vstupy a výstupy Javy.
Napsat komentář