Skip to content

Archives

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Categories

  • Brak kategorii
Trend RepositoryArticles and guides
Articles

Eclipse 4.3 (Kepler) do programowania C/C++

On 9 listopada, 2021 by admin

Eclipse 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)
  • Pisanie pierwszego programu C/C++ w Eclipse
  • Program C++
  • Program C
  • C++ Program with Makefile
  • Przeczytaj dokumentację
  • Debugowanie programów C/C++ w Eclipse CDT
  • Tips & Tricks
  • Tworzenie oprogramowania C/C++ przy użyciu GCC
  • File I/O in Eclipse

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.

  1. MinGW GCC: Przeczytaj „Jak zainstalować MinGW”.
  2. 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:

  1. 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”.
  2. 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
  1. Uruchom Eclipse, uruchamiając „eclipse.exe” w zainstalowanym katalogu Eclipse.
  2. Wybierz odpowiedni katalog dla swojego obszaru roboczego (tzn, gdzie chcesz zapisywać swoje prace).
  3. 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++:

  1. Wybierz z menu „Plik” ⇒ „Nowy” ⇒ Projekt… ⇒ C/C++ ⇒ Projekt C++.
  2. Wyskakuje okno dialogowe „Projekt C++”.
    1. W polu „Project name” wpisz „FirstProject„.
    2. W polu „Project Types” wybierz „Executable” ⇒ „Empty Project”.
    3. W polu „Toolchains” wybierz swój kompilator, np, „Cygwin GCC” lub „MinGW GCC” ⇒ Next.
  3. Wyświetla się okno dialogowe „Select Configurations”. Wybierz zarówno „Debug” jak i „Release” ⇒ Finish.
Krok 2: Napisz program Hello-world C++
  1. W „Project Explorer” (lewy panel) ⇒ Kliknij prawym przyciskiem myszy na „FirstProject” (lub użyj menu „Plik”) ⇒ Nowy ⇒ Plik źródłowy.
  2. Wyskakuje okno dialogowe „Nowy plik źródłowy”.
    1. W polu „Plik źródłowy” wpisz „Hello.cpp„.
    2. Kliknij „Zakończ”.
  3. 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:

  1. „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
  2. „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:

  1. „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
  2. „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.

Uwaga: Jeśli podczas łączenia napotkasz „error while loading shared libraries”. Zainstaluj „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

  1. Komendy używane w Eclipse CDT do budowania projektu możesz znaleźć w „<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log„.
  2. 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. Biblioteka libxxx.a jest określona przez opcję -lxxx (mała litera 'l', bez przedrostka lib 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 środowiskowe CPATH i LIBRARY_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.
  3. 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. Biblioteki libopengl32.a libglu32.a i libglut32.a są przechowywane w $cygwin\lib\w32api. Aby określić te biblioteki w linkowaniu, użyj opcji -lopengl32 -lglu32 -lglut32 (bez prefiksu lib i rozszerzenia .a).
  4. OpenGL z SDL: Pobierz SDL z http://www.libsdl.org. Wybierz Development Libraries ⇒ win32 ⇒ mingw32 ⇒ Unzip. Skopiuj katalog headers SDL (pod include) do $cygwin\usr\include\w32api; skopiuj wszystkie pliki bibliotek w lib do $cygwin\lib\w32api; skopiuj bibliotekę run-time SDL.dll (pod bin) do Windows/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.
  5. #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.
  6. 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.
  7. 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().
  8. 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 Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Archiwa

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress