Die vielseitige Entwicklungsumgebung Eclipse lässt sich per Plugin zur Qt-IDE aufrüsten. Wie sich das aufgemotzte Tool im Vergleich mit Kdevelop und Qt Creator schlägt, verrät dieser Artikel.
Neben den in früheren Artikeln vorgestellten IDEs Qt Creator [1] und Kdevelop [2] empfiehlt sich noch eine dritte Entwicklungsumgebung für angehende Qt-Programmierer: Eclipse. Eigentlich für Java-Entwickler gedacht, lässt sie sich dank modularen Aufbaus zu einem Werkzeug für weitere Sprachen aufrüsten.
IDE-Tuning
Um die Unterstützung für C und C++ kümmert sich das Plugin des CDT-Projekts. Die Integration von Qt und dessen Werkzeugen übernimmt Nokia höchstpersönlich. Die vom Qt-Hersteller bereitgestellte Erweiterung integriert den Qt Designer, stellt Assistenten zum Anlegen von neuen Qt-Projekten und Klassen bereit, kümmert sich (zusammen mit »moc«, »uic« und »rcc«) selbstständig um die automatische Übersetzung des Projekts und bindet die Qt-Dokumentation ein. Für eine komplette Qt-Entwicklungsumgebung auf Basis von Eclipse benötigt der Anwender drei Dinge: Eclipse selbst, das CDT-Plugin und die Erweiterung namens Qt Eclipse Integration.
Das klingt zunächst nach einer Abhängigkeits- und Installationsorgie. Glücklicherweise schnürt die Eclipse Foundation Komplettpakete für verschiedene Anwendungszwecke. Auf ihren Downloadseiten [3] muss der Besucher somit nur noch zum Downloadpaket “Eclipse IDE for C/C++ Developers” greifen und das Zip-Archiv auf der Festplatte entpacken. Da Eclipse selbst in Java geschrieben ist, erfordert die Software zur Ausführung noch das Java Runtime Environment (JRE) von Sun in einer möglichst aktuellen Version.
Nun fehlt nur noch das Qt-Eclipse-Integration-Plugin. Es versteckt sich recht gut auf den Downloadseiten von Qt Software rechts unten im Bereich “Other downloads” [4]. Auf der folgenden Seite genügt es in der Regel, eines der beiden fertig übersetzten Pakete (32 beziehungsweise 64 Bit) herunterzuladen. Das erhaltene Paket entpackt der Benutzer dann direkt in dem Verzeichnis, in dem er auch Eclipse extrahiert hat – und nicht im Eclipse-Verzeichnis selbst. Wichtig ist, dass die im Archiv enthaltenen Dateien in ihren jeweiligen Eclipse-Unterverzeichnissen landen.
Da sich das Qt-Integration-Plugin nur um die Integration der Bibliotheken und Werkzeuge kümmert, muss der Anwender abschließend noch das Qt-SDK separat einspielen. Wie beim JRE erledigt dies ein kurzer Griff zum Paketmanager. Die Aufrüstung einer bestehenden Eclipse-Installation beschreibt der Kasten “Qt-Integration nachrüsten”. Abschließend lässt sich Eclipse im Installationsverzeichnis per »./eclipse« aufrufen.

Abbildung 1: Die Ruhe vor dem Sturm: Der Startbildschirm von Eclipse macht noch einen aufgeräumten Eindruck. Die verlinkten Einführungen und Tutorials sind vor allem für Einsteiger lesenswert.
|
Qt-Integration |
|---|
|
Wer seine bestehende Eclipse-Installation weiterhin nutzen möchte, muss etwas mehr Aufwand treiben. Sofern die CDT-Plugins noch nicht vorhanden sind, rüstet er zunächst diese nach [5]. Das Qt-Integration-Plugin verlangt mindestens nach Eclipse in Version 3.3.2 und einem CDT-Plugin in Version 4.0. Sind diese Voraussetzungen erfüllt, fahndet der Anwender auf der Festplatte nach dem Eclipse-Plugin-Verzeichnis. Meist lautet der Pfad »/usr/local/eclipse/plugins« oder »/usr/lib/eclipse/plugins«. Jetzt wechselt er in das Verzeichnis, in dem das »eclipse/plugin«-Verzeichnis steckt – in den Beispielen also nach »/usr/local« beziehungsweise »/usr/lib« – und entpackt dort das Qt-Integration-Plugin-Paket. Anschließend startet er Eclipse mit der Kommandozeile »eclipse -clean«, um den Cache zu leeren. |
Erste Spritztour
Die Entwicklungsumgebung meldet sich zunächst mit dem Willkommen-Bildschirm aus Abbildung 1, der erfreulich aufgeräumt wirkt. Neulinge sollten die Einführungen und Tutorials hinter den bunten Schaltflächen einmal durchlesen beziehungsweise mitmachen. Nokia hat hier auch ein eigenes Qt-Beispiel und das Plugin-Tutorial hinterlegt.
Die einzelnen Punkte im Willkommen-Bildschirm öffnen direkt die entsprechenden Seiten der eingebauten Onlinehilfe. Wer in Eclipse auch auf den Rest der Qt-Dokumentation einschließlich einer Klassenreferenz zugreifen möchte, muss sich noch die 32 MByte starke “Qt API Reference Documentation for Eclipse” unter [4] herunterladen und sie im Eclipse-Verzeichnis entpacken.
Das wahre Gesicht von Eclipse sieht der Anwender erst, wenn er zur »Workbench« wechselt oder aber ein Projekt öffnet (Abbildung 2). Der Aufbau des Hauptfensters verschlingt mit zahlreichen Registern viel Platz auf dem Bildschirm, Notebooks mit kleineren Monitoren oder gar Netbooks sind damit in aller Regel komplett überfordert. Zwar lässt sich die Oberfläche selbst nach Belieben umgestalten, bei der täglichen Arbeit findet man sich aber spätestens beim Debuggen dann doch wieder vor einem Meer aus offenen Registern wieder.
Abgesehen von kleineren Macken ist Nokia die Integration der Qt-Werkzeuge gut gelungen. Schon beim Anlegen eines neuen Projekts hält der zuständige Assistent hinter »File | New | Project…« einen eigenen Abschnitt für Qt-Anwendungen bereit. Dort gibt der Entwickler seinem Projekt einen Namen, wählt die Basisklasse, kontrolliert die vorgeschlagenen Dateinamen und selektiert schließlich noch die einzubindenden Qt-Module – schon ist alles bereit. Weitere Klassen fügt er später über einen analog aufgebauten Assistenten hinzu.
Die Pfade zu den Qt-Headern und -Werkzeugen muss der Benutzer von Hand in den Grundeinstellungen hinterlegen, andernfalls lässt sich die Anwendung später nicht übersetzen. Weder der Projekt-Assistent noch das Qt-Integration-Plugin können die Verzeichnisse (meist »/usr/bin« und »/usr/include/qt4«) selbst aufspüren. Wurden noch keine Angaben gemacht, öffnet der Projekt-Assistent immerhin automatisch das entsprechende Einstellungsfenster.

Abbildung 2: Die Oberfläche von Eclipse wirkt selbst auf etwas größeren Bildschirmen überfrachtet. Hier sieht man eine typische Arbeitssitzung in der C++-/Qt-Entwicklung.
Sichtweisen
Eclipse verwendet eine ganz eigene Terminologie, mit der man erst einmal warm werden muss. Jedes geöffnete Register bietet im Hauptfenster eine bestimmte Sicht auf das Projekt. Der Projekt-Explorer am linken Rand beispielsweise listet alle in einem Projekt enthaltenen Dateien auf. Eclipse bezeichnet solche Register als Views. Unterstützung erhalten sie durch Editoren, die sich häufig, aber nicht zwangsweise, um die Eingabe von Texten kümmern. Editoren und Views darf der Anwender per Drag & Drop nach Belieben im Hauptfenster platzieren, ihre Größe verändert er durch Ziehen an ihren Umrandungen.
Überflüssige Views entfernt das kleine Kreuz auf ihrer Registerlasche, ausgeblendete holt der Menüpunkt »Window | Show View | Others…« hervor (Abbildung 3). Dieser Menüpunkt zeigt auch, wie viele Views Eclipse bereits mitbringt und standardmäßig gar nicht einblendet. Das Qt-Integration-Plugin erweitert die vorhandenen Views und Editoren um entsprechende für die Qt-Programmierung. Die meisten davon dienen der Integration von Qt Designer.
Die in mühevoller Kleinarbeit erstellte Registeranordnung darf der Programmierer als so genannte Perspective speichern (Kdevelop verwendet mit den Areas ein ähnliches Konzept). Auf diese Weise lässt sich schnell zwischen einer Umgebung zum Programmieren und einer zum Debuggen umschalten. Eclipse bringt einen kleinen Satz fertiger Perspektiven mit (»Window | Open Perspective«), das Qt-Integration-Plugin legt noch eine obendrauf: Sie zeigt alle mitgebrachten Qt-Views sowie alle grundlegenden Views für die Programmierung.

Abbildung 3: Eclipse hält Views für zahlreiche Aufgaben bereit, von der CVS-Verwaltung bis zu einer Aufgabenliste (»Tasks«).
Tippse
Wichtigstes Werkzeug auf der linken Seite ist der bereits erwähnte Project Explorer. Er sammelt alle Projekte und deren Dateien. Ein Doppelklick öffnet Letztere im Editorbereich in einem eigenen Register. Ähnlich wie in einem Browserfenster mit zu vielen Tabs wird es bei großen Projekten dort allerdings recht schnell eng. Eclipse bietet hier leider keine so intelligenten Verwaltungslösungen wie Kdevelop oder Qt Creator.
Bei der Eingabe von Quellcode erhält der Programmierer die mittlerweile branchenüblichen Hilfen: Zusammengehörende Codeteile lassen sich wegklappen, Einrückungen nimmt Eclipse genauso wie das Setzen von Klammern selbstständig vor. Schon während der Eingabe liefert die automatische Codevervollständigung passende Vorschläge, über Methoden schwebt ein Tooltipp mit den benötigten Parametern. Alle Hilfen lassen sich schnell über Tastenkürzel aktivieren (Abbildung 4). »Edit | Format« zwängt dem gesamten Quellcode eine einheitliche Formatierung auf.
Code-Vorlagen
Für wiederkehrende Codefragmente sind die Templates gedacht. Beispielsweise reicht es aus, »for« einzutippen, [Strg]+[Eingabe] zu drücken und eine der Vorlagen auszuwählen. Eclipse generiert dann einen leeren »for«-Rumpf, der Programmierer muss nur noch die eingeblendeten Platzhalter ersetzen, was ebenfalls halbautomatisch über die Bühne geht. Trotz dieser netten Hilfen erreicht Eclipse aber nicht ganz den Eingabekomfort von Kdevelop. Breakpoints legt der Entwickler wie gewohnt im Editor mit einem Rechtsklick auf den linken Rand fest, genauso wie Lesezeichen, mit denen er schnell an wichtige Codestellen gelangt.
Welche Hilfen ansonsten zur Verfügung stehen, hängt stark von den installierten Eclipse-Plugins ab. Die aktuell verfügbare Galileo-Version des Eclipse-/CDT-Bündels generiert über das »Source«-Menü automatisch Getter- und Setter-Methoden sowie noch nicht implementierte Methodenrümpfe. Dabei springt jedoch jedes Mal der eigentlich für das Refactoring zuständige Assistent an – auch dies hat Kdevelop eleganter gelöst. Dafür kann die Refactoring-Abteilung nicht nur Klassen umbenennen, sondern auch Code in eine Funktion auslagern, einen Ausdruck durch eine neue Variable ersetzen und eine markierte Zeichenkette im gesamten Projekt durch eine frisch generierte Konstante austauschen.
Orientierungshilfen
Besondere Extras der aufgerüsteten Entwicklungsumgebung sind die »Call Hierarchy« und die »Type Hierarchy«. Die erstgenannte View zeigt zu einer markierten Funktion an, wie es zu ihrem Aufruf kam, die Type Hierarchy präsentiert die Vererbungshierarchie einer markierten Klasse. Der »Include Browser« liefert schließlich noch Informationen darüber, welche Datei welche Headerdateien einbindet. Als Versionierungssystem ist standardmäßig nur CVS vorhanden, dessen Integration jedoch vorbildlich gelöst ist.
Wer die Suchfunktion bemüht, bekommt ein ziemlich überfrachtetes Dialogfenster präsentiert. Dort kann er getrennt nach Dateien, Aufgaben (Tasks) und C-/C++- Code fahnden. Die Anfrage darf der Suchende mit Wildcard-Zeichen spicken, im Fall von Dateien kann er sogar reguläre Ausdrücke einsetzen. Sämtliche Ergebnisse sammelt eine entsprechende View. Schneller gelangt zum Suchergebnis, wer einen Text im Editor markiert und dann [Strg]+[Umschalt]+[T] drückt oder alternativ hinter »Search | Text« wählt, wo Eclipse suchen soll.
Unterstützung erhält die Suchfunktion durch die View »Outline«. Sie liefert zunächst einen Überblick über die gerade im Editorfenster geöffnete Klasse. Ein Klick auf einen Bezeichner springt direkt an dessen Stelle im Code. Zusätzlich führt Outline noch alle eingebundenen Headerdateien auf, die wiederum ein Doppelklick öffnet. An den Navigationskomfort von Qt Creator oder Kdevelop kommt das Fenster jedoch nicht heran.
Zeichenbrett
Per Doppelklick auf eine ».ui«-Datei öffnet Eclipse automatisch einen grafischen Editor. Dahinter verbirgt sich ein gut integrierter Qt Designer (Abbildung 5). Ihn verrät eigentlich nur noch der gleichnamige neue Menüpunkt. Um die leere Fensterfläche mit Elementen zu bestücken, kramt der Anwendungsentwickler in der linken Leiste das Register der »Widget Box«-View hervor und zieht die benötigten Teile einfach auf die Zeichenfläche. Sämtliche Eigenschaften der Widgets fasst am rechten Rand die View des »Property Editor« zusammen. Der ebenfalls dort ansässige »Object Inspector« listet alle Widgets und ihre Hierarchie auf.
Recht einfach lassen sich in der IDE auch Signale mit Slots verbinden. Dazu muss der Anwender den Qt Designer zunächst in den entsprechenden Modus versetzen (»Qt Designer | Editor Mode | Edit Signals/Slots«). Anschließend zieht er per Drag & Drop die gewünschten Verbindungen. Diese listet der »Qt C++ Signal Slot Editor« auf. Weitere Hilfen gibt es allerdings nicht, die geeigneten Methoden im Quellcode muss der Programmierer komplett selbst anlegen – das Qt-Plugin generiert nicht einmal Rümpfe.
Auch an anderen Stellen hakt die Integration noch. Beispielsweise erscheint der komfortable Editor für Projektdateien nur dann, wenn der Anwender im Project Explorer die ».pro«-Datei mit der rechten Maustaste anklickt und dann über »Open With | Other…« den »Qt Project Editor« wählt. Andernfalls erscheint nur ein einfacher Texteditor. Immerhin merkt sich Eclipse die geänderte Zuweisung. Neben dem Project Editor installiert das Qt-Integration-Plugin noch einen ähnlich einfach zu bedienenden Kollegen für Ressourcen-Dateien. Dort braucht der Benutzer lediglich per »Add« weitere Präfixe und Dateien hinzuzufügen.
Fertige Projekte übersetzt und startet ein Klick auf den Button mit dem grünen Pfeil. Wie an den Ausgaben auf der »Console«-View zu sehen ist, greift Eclipse automatisch auf die passenden Qt-Werkzeuge zurück. Als Compiler verlangt die CDT die GNU Compiler Collection nebst »make«. Wer möchte, darf wie bei Kdevelop für ein Projekt mehrere unterschiedliche Laufzeitumgebungen erstellen und dann schnell zwischen diesen wechseln. Beispielsweise könnte man eine Konfiguration anlegen, welche die übersetzte Anwendung mit Kommandozeilenparametern füttert, während eine andere darauf verzichtet.
Als Debugger setzt das CDT standardmäßig auf GDB, der den Code auf Wunsch schrittweise abarbeitet. Unit-Tests muss der Entwickler manuell durchführen, eine Unterstützung wie in Kdevelop fehlt in der Eclipse-Standardrelease. Auch das Qt-Integration-Plugin rüstet hier keine Hilfen für die hauseigenen Klassen nach.
Fazit
Wer bereits Erfahrungen mit Eclipse gesammelt hat und jetzt in die Entwicklung von Qt-Programmen einsteigen möchte, kann bedenkenlos zum Qt-Integration-Plugin greifen. Der Qt Designer fühlt sich ganz offensichtlich auch in seiner neuen Heimat wohl. Die Komponente Project Editor findet sich sogar ausschließlich in der Eclipse-Erweiterung.
Aber auch für Eclipse-Neulinge kann sich ein Einstieg lohnen. Die schier unendliche Anzahl kostenloser (und kommerzieller) Plugins rüstet fast jede gewünschte Funktion nach – von der Subversion-Anbindung bis hin zum UML-Diagrammeditor. An die pfiffigen Eingabehilfen von Kdevelop kommt Eclipse in der Standardausstattung jedoch nicht heran. Der Konkurrent Qt Creator demonstriert zudem, wie eine aufgeräumte Oberfläche aussehen kann. (mhu)
|
Infos |
|---|
|
[1] Tim Schürmann, “Nokias Hausmarke”: Linux-Magazin 10/09, S. 120 [2] Tim Schürmann, “Es entwickelt sich”: Linux-Magazin 12/09, S. 104 [3] Eclipse-Downloadseiten: [http://www.eclipse.org/downloads/] [4] Qt-Integration-Plugin: [http://qt.nokia.com/developer/eclipse-integration] [5] Eclipse C/C++ Development Tooling: [http://www.eclipse.org/cdt/] |







