Bevezetés Az ECLIPSE Project
C++ fejlesztés az ECLIPSE környezetben Kápolnai Richárd
[email protected]
UNIX, 2005. május 13.
Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Bevezetés Az ECLIPSE Project
Tartalomjegyzék
1
Bevezetés „IDE” IDE eszközök
2
Az ECLIPSE Project Célkituzés ˝ Architektúra CDT Project Összefoglalás
Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Bevezetés Az ECLIPSE Project
„IDE” IDE eszközök
Integrated Development Environment Olyan szoftver, ami szélesköruen ˝ támogatja a fejlesztés ˝ során eloforduló feladatokat Szövegszerkesztés, RAD- és GUI-varázslók Fordítás/Interpretálás automatizálása (make, automake, autoconf, scons) Nyomkövetés, futtatás ˝ Nézetek (Class browser), diagramkészítok Verzióköveto˝ Dokumentáció
Célja a fejleszto˝ produktivitásának fokozása A tanulási ido˝ rövidítése A nem-kreatív feladatok átvállalása Szorosabb együttmuködés: ˝ az ember vizuális, a gép precíz Kényelmes eszközhasználat (Front-end) Funkciók kiterjesztése (Extension) Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Bevezetés Az ECLIPSE Project
„IDE” IDE eszközök
Példák A Nagy Öregek (parancssorosak) Dartmouth Time Sharing System: BASIC nyelvhez (1964) UNIX és GNU eszközök: gvim/emacs + make + ddd + . . . A ddd grafikus debugger front-end, kitun ˝ o˝ adatábrázolással
Borland, Sun, Microsoft termékek Nyílt forráskódúak Motor: konzolos (terminálos) C++, Java, Perl Anjuta: C++ és Gnome/GTK GUI KDevelop: C++ és KDE/QT GUI, továbbá 10 másik nyelv NetBeans: Java Eclipse: univerzális?
Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Bevezetés Az ECLIPSE Project
Célkituzés ˝ Architektúra CDT Project Összefoglalás
Eclipse motivációk Nyílt forráskódú Nehézsúlyú („robust”) Sokoldalú („full-featured”) Magas színvonalú („commercial-quality”) Nyílt platform Windows, Linux, Solaris, Apple Mac Nyelvfüggetlen, specifikus elemek plugin formában ˝ ˝ Bovíthet o˝ architektúra: tetszoleges plugin felcsatolható
Java alapú platform és modulok Konzorcium áll mögötte (IBM, Borland, Novell, HP, . . . )
Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Bevezetés Az ECLIPSE Project
Célkituzés ˝ Architektúra CDT Project Összefoglalás
Felépítés: mikrokernel + sok plugin
Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Bevezetés Az ECLIPSE Project
Célkituzés ˝ Architektúra CDT Project Összefoglalás
Plugin felépítése ˝ Építokocka, legkisebb önálló egység Illesztési pontok („Extension point”) Minden plugin 1 vagy több külso˝ pontra illeszkedik Deklarálhat saját illesztési pontokat Java nyelv interfész-implementáció mechanizmusával
˝ Függoségi viszonyok Egy külön alkönyvtár Java- és natív függvénykönyvtárakkal Önleíró entitás („manifest” állomány: plugin.xml) A Platform Runtime mikrokernel menedzseli a plugineket Csak igény esetén tölti be, nem induláskor Induláskor összeköti logikailag az installált pluginokat
Minden funkcionalitást valamelyik plugin nyújtja Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Eclipse Plug-in Architecture ■
Typical arrangement plug-in B
plug-in A extension point P
contributes
extension
implements interface I ■
Plug-in A
class C creates, calls
– Declares extension point P – Declares interface I to go with P ■
Plug-in B – Implements interface I with its own class C – Contributes class C to extension point P
200303331
■
Plug-in A instantiates C and calls its I methods
14
Bevezetés Az ECLIPSE Project
Célkituzés ˝ Architektúra CDT Project Összefoglalás
C/C++ Development Tools Egy plugin-csomag ˝ o˝ szoftver, lelkes közösség Gyorsan fejlod Tartalmazza C/C++ Editor (syntax highlighting, code completion etc.) C/C++ Debugger (GDB front-end) C/C++ Launcher Parser Search Engine Content Assist Provider Makefile generator
Jó dokumentáció Könnyen kezelheto˝ Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Bevezetés Az ECLIPSE Project
Célkituzés ˝ Architektúra CDT Project Összefoglalás
˝ Elonyök Ingyenes (nyílt forráskódú) ˝ Jó minoség u, ˝ modern grafikus IDE Aktívan támogatja a konzorcium Igéretes vetélytársa a kereskedelmi eszközöknek
˝ Bovíthet o˝ Rengeteg ingyenes és kereskedelmi plugin Egy környezetben: C, Java, PHP, Web, UML, Perl, . . . Jó felépítés: könnyu˝ plugint írni
Sok plugin is installálható egyszerre (dinamikus betöltés) ˝ installálható Könnyen kezelheto, Élo˝ közösség, cikkek, konferenciák „The proof of the pudding is in the eating” Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Függelék
Demo Installálás Hivatkozások
Demo - Bináris fa
> g++ -g demo.cc > ddd a.out
Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Demo - Forráskód #include
class Elem { int ertek; Elem * bal, * jobb; public: Elem(int ertek, Elem *bal, Elem *jobb) { this->ertek = ertek; this->bal = bal; this->jobb = jobb; } ~Elem() { if (bal != NULL) delete bal; std::cout << ertek; if (jobb != NULL) delete jobb; } }; int main(int argc, char **argv) { Elem * gyoker = new Elem(4, new Elem(2, new Elem(1, NULL, NULL), new Elem(3, NULL, NULL) ), new Elem(5, NULL, NULL) ); std::cout<<"Bejárjuk a fát: "; delete gyoker; }
Függelék
Demo Installálás Hivatkozások
Installálás egyszeru˝ felhasználóként (Linux) ECLIPSEURL=http://eclipse.gabriel.co.hu/downloads/drops/R-3.0\ .2-200503110845/eclipse-SDK-3.0.2-linux-gtk.zip ECLIPSECDTURL=http://download.eclipse.org/tools/cdt/releases/\ new/zips/2.1.1/org.eclipse.cdt.sdk-2.1.1-linux.x86.zip # Ideiglenes könyvtár a telepítési állományokhoz TEMP_KONYVTAR=‘mktemp -d‘ || exit 1 # Letöltés cd $TEMP_KONYVTAR && wget $ECLIPSEURL && wget $ECLIPSECDTURL # Telepítés mkdir $HOME/opt ; cd $HOME/opt || exit 1 for i in $TEMP_KONYVTAR/*.zip ; do unzip $i ; done # Java Runtime Environment beállítása cd eclipse && ln -s $HOME/j2re1.4.2_08 jre && cd .. # Letörölhetjük a .zip fájlokat rm -r $TEMP_KONYVTAR Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben
Függelék
Demo Installálás Hivatkozások
Hivatkozások
Eclipse Project FAQ http://www.eclipse.org/eclipse/faq/eclipse-faq.html CDT (C/C++ Development Tools) Project Tutorial, Documentation, FAQ http://eclipse.org/cdt/ OTI, Inc. Eclipse Platform Technical Overview http://www.eclipse.org/whitepapers/eclipse-overview.pdf WikipediA Integrated Development Environment http://en.wikipedia.org/wiki/Integrated_development_environment
Kápolnai Richárd
C++ fejlesztés az ECLIPSE környezetben