Eclipse 4.3 (Kepler) do programowania C/C++
On 9 listopada, 2021 by adminEclipse jest open-source’owym zintegrowanym środowiskiem programistycznym (IDE) wspieranym przez IBM. Strona główna to @ www.eclipse.org. Eclipse jest popularny do rozwoju projektów w Javie. Wspiera również C/C++, PHP, Python, Perl i inne projekty internetowe poprzez rozszerzalne wtyczki. Eclipse jest wieloplatformowy i działa pod Windows, Linuksem i Mac OS.
Jak zainstalować Eclipse C/C++ Development Tool (CDT) 8.1.2 dla Eclipse 4.2.2 (Juno)
Krok 0: Zainstaluj MinGW GCC lub Cygwin GCC
Aby używać Eclipse do programowania C/C++, potrzebujesz kompilatora C/C++. W systemie Windows możesz zainstalować MinGW GCC lub Cygwin GCC. Wybierz MinGW, jeśli nie jesteś pewien, ponieważ MinGW jest lżejszy i łatwiejszy do zainstalowania, ale ma mniej funkcji.
- MinGW GCC: Przeczytaj „Jak zainstalować MinGW”.
- Cygwin GCC: Przeczytaj „Jak zainstalować Cygwin”. Upewnij się, że wybrałeś pakiety „
gcc
„, „g++
„, „gdb
” i „make
” w kategorii „Devel
” (Development) – pakiety te nie są częścią domyślnej instalacji.
Krok 1: Zainstaluj Eclipse C/C++ Development Tool (CDT)
Dwa sposoby instalacji CDT, w zależności od tego, czy wcześniej zainstalowałeś Eclipse:
- Jeśli masz już zainstalowany „Eclipse for Java Developers” lub inne pakiety Eclipse, możesz zainstalować wtyczkę CDT w następujący sposób:
Uruchom Eclipse ⇒ Help ⇒ Install New Software ⇒ W polu „Work with” rozwiń menu rozwijane i wybierz „Kepler – http://download.eclipse.org/releases/kepler” (lub juno dla Eclipse 4.2; lub helios dla Eclipse 3.7).
W polu „Name” rozwiń węzeł „Programming Language” ⇒ Zaznacz „C/C++ Development Tools” ⇒ „Next” ⇒ … ⇒ „Finish”. - Jeśli nie zainstalowałeś żadnego pakietu Eclipse, możesz pobrać „Eclipse IDE for C/C++ Developers” z http://www.eclipse.org/downloads, a następnie rozpakować pobrany plik do wybranego przez siebie katalogu.
Krok 2: Konfiguracja
Nie musisz przeprowadzać żadnej konfiguracji, o ile binaria Cygwin lub MinGW są zawarte w zmiennej środowiskowej PATH
. CDT przeszukuje PATH
, aby odkryć kompilatory C/C++.
Pisanie pierwszego programu C/C++ w Eclipse
Program C++
Krok 0: Uruchom Eclipse
- Uruchom Eclipse, uruchamiając „
eclipse.exe
” w zainstalowanym katalogu Eclipse. - Wybierz odpowiedni katalog dla swojego obszaru roboczego (tzn, gdzie chcesz zapisywać swoje prace).
- Jeśli pojawi się ekran „powitalny”, zamknij go klikając przycisk „close”.
Krok 1: Utwórz nowy projekt C++
Dla każdej aplikacji C++ musisz utworzyć projekt, aby przechowywać wszystkie kody źródłowe, pliki obiektowe, pliki wykonywalne i odpowiednie zasoby.
Aby utworzyć nowy projekt C++:
- Wybierz z menu „Plik” ⇒ „Nowy” ⇒ Projekt… ⇒ C/C++ ⇒ Projekt C++.
- Wyskakuje okno dialogowe „Projekt C++”.
- W polu „Project name” wpisz „
FirstProject
„. - W polu „Project Types” wybierz „Executable” ⇒ „Empty Project”.
- W polu „Toolchains” wybierz swój kompilator, np, „Cygwin GCC” lub „MinGW GCC” ⇒ Next.
- W polu „Project name” wpisz „
- Wyświetla się okno dialogowe „Select Configurations”. Wybierz zarówno „Debug” jak i „Release” ⇒ Finish.
Krok 2: Napisz program Hello-world C++
- W „Project Explorer” (lewy panel) ⇒ Kliknij prawym przyciskiem myszy na „
FirstProject
” (lub użyj menu „Plik”) ⇒ Nowy ⇒ Plik źródłowy. - Wyskakuje okno dialogowe „Nowy plik źródłowy”.
- W polu „Plik źródłowy” wpisz „
Hello.cpp
„. - Kliknij „Zakończ”.
- W polu „Plik źródłowy” wpisz „
- Plik źródłowy „
Hello.cpp
” otwiera się na panelu edytora (w razie potrzeby kliknij dwukrotnie na „test.cpp
„, aby otworzyć). Wprowadź następujące kody:#include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Jeśli „Unresolved Inclusion Error”
Jeśli obok instrukcji #include
pojawia się błąd „unresolved inclusion”, to „include paths for headers” nie są ustawione prawidłowo. Wybierz menu „Project” ⇒ Properties ⇒ C/C++ General ⇒ Paths and Symbols ⇒ W zakładce „Includes”:
Dla Cygwin GCC:
- „Dodaj” następujące katalogi do „GNU C”, gdzie
$CYGWIN_HOME
jest twoim zainstalowanym katalogiem 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
- „Dodaj” następujące katalogi do „GNU C++”, gdzie
$CYGWIN_HOME
jest Twoim zainstalowanym katalogiem 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
Dla MinGW GCC:
- „Dodaj” następujące katalogi do „GNU C”, gdzie
$MINGW_HOME
jest twoim zainstalowanym katalogiem MinGW:$MINGW_HOME\lib\gcc\mingw32.6.x\include
$MINGW_HOME\include
$MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
- „Dodaj” następujące katalogi do „GNU C++”, gdzie
$MINGW_HOME
jest Twoim zainstalowanym katalogiem 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
UWAGA: Aby znaleźć ścieżki do nagłówków, możesz wykonać wyszukiwanie w nagłówkach takich jak „stdio.h
” (dla C) i „iostream
” (dla C++) pod zainstalowanym katalogiem Cygwin lub MinGW.
libmpfr4
” w cygwin.Krok 3: Compile/Build
Kliknij prawym przyciskiem myszy na „FirstProject
” (lub użyj menu „Project”) ⇒ wybierz „Build Project”, aby skompilować i połączyć program.
Krok 4: Uruchom
Aby uruchomić program, kliknij prawym przyciskiem myszy na „FirstProject
” (lub gdziekolwiek na źródle „test.cpp
„, lub wybierz menu „Run”) ⇒ Run As ⇒ Local C/C++ Application ⇒ (If ask, choose Cygwin’s gdb debugger) ⇒ The output „Hello, world!” appears on the „Console” panel.
UWAGA: Musisz stworzyć nowy projekt C++ dla KAŻDEGO ze swoich problemów programistycznych. To jest niechlujne przy pisaniu programów-zabawek!
Program C
Postępuj tak samo jak powyżej. Utwórz „Projekt C” (zamiast „Projektu C++”). Wypróbuj następujący program Hello-world (o nazwie „Hello.c
„).
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0;}
C++ Program with Makefile
W poprzednich przykładach używaliśmy tak zwanego managed-make, gdzie Eclipse automatycznie generował plik makefile do zbudowania programu. Możemy także napisać własny plik makefile, aby mieć pełną kontrolę nad procesem budowania programu.
Krok 1: Tworzenie projektu C++ Makefile
Z menu „File” ⇒ New ⇒ Project… ⇒ C/C++ ⇒ Projekt C++ ⇒ W „Project name” wpisz „HelloCppMakefile
” ⇒ W „Typ projektu” wybierz „Makefile Project „, „Empty Project” ⇒ W „Toolchains” wybierz „Cygwin GCC” lub „MinGW GCC”. Zignoruj komunikat ostrzegawczy.
Krok 2: Napisz program w C++
Kliknij prawym przyciskiem myszy na projekcie ⇒ New ⇒ Source File ⇒ W „Source file” wpisz „Hello.cpp
” ⇒ Wprowadź następujące kody źródłowe:
#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
Krok 3: Write a Makefile
Kliknij prawym przyciskiem myszy na projekt ⇒ New ⇒ File ⇒ W „File name” wpisz „makefile
” ⇒ Wprowadź następujące kody. Zwróć uwagę, że musisz użyć Tab (NIE spacji) dla wcięcia.
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: Zbuduj projekt
Kliknij prawym przyciskiem myszy na projekcie ⇒ Zbuduj projekt.
Krok 5: Uruchom program
Kliknij prawym przyciskiem myszy na projekcie ⇒ Uruchom jako ⇒ Lokalna aplikacja C/C++.
Napisz plik makefile do kompilacji programów-zabawek w ramach jednego projektu.
Przeczytaj dokumentację
Powinieneś przynajmniej przejrzeć „Workbench User Guide” i „C/C++ Development User Guide” Eclipse – dostępne przez stronę „Welcome” lub menu „Help” Eclipse. To zaoszczędzi Ci wielu godzin spędzonych na próbach dowiedzenia się, jak zrobić niektóre rzeczy później.
Debugowanie programów C/C++ w Eclipse CDT
Umiejętność użycia graficznego debuggera do debugowania programu jest kluczowa w programowaniu. Może zaoszczędzić Ci niezliczonych godzin zgadywania, co poszło nie tak.
Krok 0: Napisz program w C++ – Poniższy program oblicza i wypisuje czynnik n
(=1*2*3*...*n
). Program ma jednak błąd logiczny i daje błędną odpowiedź dla n
=20
(„The Factorial of 20 is -2102132736
” – liczba ujemna?!).
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
Użyjmy debuggera graficznego do debugowania programu.
Krok 1: Ustaw początkowy punkt przerwania – punkt przerwania wstrzymuje wykonywanie programu, abyś mógł zbadać wewnętrzne stany (np, wartości zmiennych) programu. Przed uruchomieniem debugera musisz ustawić przynajmniej jeden punkt przerwania, aby zawiesić wykonywanie wewnątrz programu. Ustaw punkt przerwania w funkcji main()
poprzez dwukrotne kliknięcie lewego marginesu linii zawierającej main()
. Niebieskie kółko pojawi się w lewym marginesie, wskazując, że punkt przerwania jest ustawiony w tej linii.
Krok 2: Uruchom debugger – Kliknij prawym przyciskiem myszy na projekcie (lub użyj menu „Run”) ⇒ „Debug As” ⇒ „Local C/C++ Application” ⇒ wybierz „Yes”, aby przełączyć się do perspektywy „Debug” (Perspektywa jest szczególnym układem paneli, który odpowiada określonemu zadaniu programistycznemu, takiemu jak edycja lub debugowanie). Program rozpoczyna wykonywanie, ale zawiesza swoje działanie w punkcie przerwania, tj. w funkcji main()
.
Jak pokazano na poniższym rysunku, podświetlona linia (wskazana również niebieską strzałką) wskazuje instrukcję, która ma być wykonana w następnym kroku.
Krok 3: Step-Over and Watch the Variables and Outputs – Kliknij przycisk „Step Over” (lub wybierz „Step Over” z menu „Run”), aby przejść pojedynczo przez program. Na każdym kroku sprawdzaj wartości zmiennych (w panelu „Variable”) i wyjścia produkowane przez Twój program (w panelu „Console”), jeśli są. Możesz także umieścić kursor na dowolnej zmiennej, aby sprawdzić zawartość zmiennej.
Single-stepping 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!
Krok 4: Breakpoint, Run-To-Line, Resume and Terminate – Jak wspomniano, breakpoint zawiesza wykonywanie programu i pozwala zbadać wewnętrzne stany programu. Aby ustawić punkt przerwania na konkretnej instrukcji, kliknij dwukrotnie lewy margines tej linii (lub wybierz „Toggle Breakpoint” z menu „Run”).
„Resume” kontynuuje wykonywanie programu, aż do następnego punktu przerwania, lub do końca programu.
„Single-step” przez pętlę z dużą liczbą jest czasochłonne. Możesz ustawić punkt przerwania w instrukcji bezpośrednio poza pętlą (np. linia 12 powyższego programu) i wydać polecenie „Wznów”, aby zakończyć pętlę.
Alternatywnie, możesz umieścić kursor na konkretnej instrukcji i wydać polecenie „Uruchom do linii” z menu „Uruchom”, aby kontynuować wykonywanie aż do tej linii.
„Zakończ” kończy sesję debugowania. Zawsze kończ bieżącą sesję debugowania używając „Terminate” lub „Resume” aż do końca programu.
Krok 5: Przełączenie z powrotem do perspektywy C/C++ – Kliknij ikonę perspektywy „C/C++” w prawym górnym rogu, aby przełączyć się z powrotem do perspektywy „C/C++” do dalszego programowania (lub menu „Okno” ⇒ Otwórz perspektywę ⇒ C/C++).
Nie mogę bardziej podkreślić, że opanowanie obsługi debuggera jest kluczowe w programowaniu. Poznaj funkcje dostarczane przez debuggery.
Inne funkcje debuggera
Modyfikuj wartość zmiennej: Możesz zmodyfikować wartość zmiennej przez wpisanie nowej wartości w panelu „Variable”. Jest to przydatne do tymczasowej modyfikacji zachowania programu, bez zmiany kodu źródłowego.
Krok-Into i Krok-Return: Aby debugować funkcję, musisz użyć „Step-Into”, aby wejść w pierwszą instrukcję metody. Możesz użyć „Step-Return”, aby powrócić do wywołującego, gdziekolwiek w obrębie metody. Alternatywnie, możesz ustawić punkt przerwania wewnątrz metody.
UWAGA: Jeżeli podczas debugowania otrzymujesz komunikat błędu „Can’t find a source file at /cygdrive/c
…”, musisz skonfigurować mapowanie pomiędzy „/cygdrive/c
” i „c:/
” (zakładając, że twój program jest przechowywany w napędzie c. Z „Window” ⇒ „Preferences” ⇒ „C/C++” ⇒ „Debug” ⇒ „Common Source Lookup Path”, wybierz „Add” ⇒ „Path Mapping”.
Tips & Tricks
Przeczytaj Eclipse for Java’s Tips & Tricks dla ogólnych wskazówek dotyczących używania Eclipse.
Tworzenie oprogramowania C/C++ przy użyciu GCC
- Komendy używane w Eclipse CDT do budowania projektu możesz znaleźć w „
<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log
„. - Ustawianie include-paths, library-paths, i bibliotek: Podczas budowania programu kompilator potrzebuje plików nagłówkowych, aby skompilować kody źródłowe; linker potrzebuje bibliotek, aby rozwiązać zewnętrzne odwołania. Kompilator przeszukuje „include-paths” dla nagłówków określonych w dyrektywach
#include
. Linker przeszukuje „library-paths” dla „bibliotek” potrzebnych do linkowania programu. W GCC, include-path jest określone przez opcję-Idir
lub zmienną środowiskowąCPATH
. Biblioteka-ścieżka jest określona przez opcję-Ldir
lub zmienną środowiskowąLIBRARY_PATH
. Bibliotekalibxxx.a
jest określona przez opcję-lxxx
(mała litera'l'
, bez przedrostkalib
i rozszerzenia.a
).
W Eclipse CDT można ustawić ścieżki include, ścieżki do bibliotek i biblioteki klikając prawym przyciskiem myszy na projekcie ⇒ Właściwości ⇒ C/C++ Ogólne ⇒ Ścieżki i symbole ⇒ W zakładkach „Includes”, „Ścieżki do bibliotek” i „Biblioteki”. Ustawienia dotyczą tylko wybranego projektu.
Aby ustawić ścieżki include i ścieżki bibliotek dla wszystkich projektów, ustaw zmienne środowiskoweCPATH
iLIBRARY_PATH
. W Eclipse wybierz „Window” ⇒ Preferences ⇒ C/C++ ⇒ Build ⇒ Environment.
Alternatywnie, skopiuj nagłówki i biblioteki do katalogów systemowych, a możesz pominąć include-paths i library-paths. - OpenGL z GLUT: Dla Cygwin należy zainstalować gcc, g++, gdb, make (w kategorii Devel) oraz opengl, freeglut (w kategorii grafika). Nagłówki
gl.h
,glu.h
,glut.h
są przechowywane w$cygwin\usr\include\w32api\GL
. Użyj#include <GL/gl__.h>
aby dołączyć te nagłówki. Bibliotekilibopengl32.a
libglu32.a
ilibglut32.a
są przechowywane w$cygwin\lib\w32api
. Aby określić te biblioteki w linkowaniu, użyj opcji-lopengl32
-lglu32
-lglut32
(bez prefiksulib
i rozszerzenia.a
). - OpenGL z SDL: Pobierz SDL z http://www.libsdl.org. Wybierz Development Libraries ⇒ win32 ⇒ mingw32 ⇒ Unzip. Skopiuj katalog headers
SDL
(podinclude
) do$cygwin\usr\include\w32api
; skopiuj wszystkie pliki bibliotek wlib
do$cygwin\lib\w32api
; skopiuj bibliotekę run-timeSDL.dll
(podbin
) doWindows/System32
. W swoim programie uwzględnij te dwa nagłówki:#include <SDL/sdl.h>
i#include <SDL/sdl_opengl.h>
. Do linkowania, dodaj te biblioteki:-lSDL
-lSDLmain
. - #pragma Comment Dyrektywa: dyrektywa pragma comment, np.
#pragma comment(lib, "opengl32.lib")
, jest często używana do dołączenia konkretnej biblioteki (tak samo jak opcja-l
). Ta zależna od systemu dyrektywa działa w kompilatorze Windows, ale NIE w GCC. - Błąd „wiele wzorców docelowych”: Występuje problem z GNU make (przy
$Cygwin\bin\make.exe
). Zastąpiony przez tę kopię @ http://www.cmake.org/files/cygwin/make.exe. - fflush(stdout): Biblioteka gcc używa buforowanego I/O (zgodnie ze specyfikacją C). Dane wyjściowe są wypisywane do strumienia wyjściowego tylko po znaku nowej linii. Możesz przepłukać wyjście za pomocą
fflush()
. - Nazwa projektu nie może zawierać słowa „setup”: Jeśli nazwiesz swój projekt C/C++ nazwą zawierającą słowo „
setup
„, to wynikowy „*setup*.exe
” wywoła UAC (User Authorization Control) i będzie wymagał prawa administratora do uruchomienia. (Zajęło mi to kilka godzin, aby to rozgryźć! Spróbuj zmienić nazwę „hello.exe
” na „mysetup.exe
„.)
File I/O in Eclipse
Refer to Eclipse for Java’s File IO.
Dodaj komentarz