Daten|teiler
Kopieren als Kulturtechnik

Eine kleine Einführung in KDevelop

6. März 2009 von Christian Imhorst

Dieser Artikel von mir ist erstmals im freiesMagazin Februar 2009 erschienen.

Die Besonderheit von der integrierten Entwicklungsumgebung (IDE) KDevelop liegt darin, dass man ziemlich einfach ein ganzes Softwareprojekt erstellen kann. Dabei nimmt es einem die Erstellung und Verwaltung aller benötigten Projektdateien wie Quelltext, Configure-Skript, Makefile, Lizenz und Dokumentation ab. Wenn das Projekt fertig ist, kann es als Tar-Archiv gepackt und veröffentlicht werden. Jeder, der mal den Quelltext eines Open-Source-Projekts heruntergeladen hat, um ihn anschließend zu kompilieren, kennt solche Archive – und mit KDevelop hat man sie schnell gebaut.

Einführung und Installation

KDevelop lag im Dezember 2008 in der Version 3.5.4 vor, doch die 4er ist schon in den Startlöchern. Im selben Monat erschien nämlich auch KDevelop 4.0 Alpha5 (3.9.84), welches zusammen mit der Beta 2 von KDE 4.2 veröffentlicht werden soll. Die IDE umfasst verschiedene Programme, die man zum Programmieren unter GNU/Linux und anderen Unix-basierten Betriebssystemen braucht. Darunter befinden sich ein Texteditor, mit dem der Quelltext geschrieben wird, ein Compiler zum Übersetzen des Quelltextes, ein Linker und Werkzeuge zum Entwickeln grafischer Oberflächen wie der Qt-Designer.

Installiert man KDevelop, muss man also eine ganze Reihe von Werkzeugen gleich mit installieren, damit alle Abhängigkeiten erfüllt sind. Wichtig sind neben dem eigentlichen Programm KDevelop auch noch die Pakete make, automake, libtool, autoconf, flex, gcc (eventuell mit gcc-c++, g++ bzw. build-essential unter Debian-basierten Systemen) und konsole (bzw. kdebase unter Fedora). Falls diese Programme nicht automatisch von der Paketverwaltung installiert werden, sollte man das noch nachholen. Die Liste kann leider nicht vollständig sein, da vielleicht noch das eine oder andere Paket zusätzlich gebraucht wird, je nachdem, welches Betriebssystem und welchen Desktop man verwendet. Eine Liste mit allen Anforderungen von KDevelop 3.5 findet man auf der KDevelop-Webseite.

Nach der Installation kann man KDevelop über den Eintrag „Entwicklung“ im KDE- oder GNOME-Menü mit verschiedenen Voreinstellungen starten. Um sich einen ersten Eindruck zu verschaffen, klickt man am besten auf „KDevelop: C/C++“. Am Anfang fallen einem besonders die vielen verschiedenen Schaltflächen am linken, rechten und unteren Rand zum Ein- und Ausblenden der verschiedenen Arbeitsbereiche auf. Davon sollte man sich aber nicht verwirren lassen. Für Neueinsteiger ist vermutlich die Dokumentation als Hilfe zur Selbsthilfe am Wichtigsten. Ein „Handbuch zu KDevelop“ findet man zwar im Menüpunkt „Hilfe“ (oder man drückt einfach die Taste F1), will man aber direkt auf ein bestimmtes Hilfe-Dokument zugreifen, dann ist der Weg über die Schaltfläche „Dokumentation“ ganz rechts im Fenster schneller. Nach dem Anklicken erscheint eine Baumstruktur mit Links zu den einzelnen Dokumenten.

<em>KDevelop im Menü (hier GNOME).</em>“ title=“kdevelop-menu“ width=“300″ height=“224″ class=“size-medium wp-image-1835″ /><p id=KDevelop im Menü (hier GNOME).

Hallo Welt

Um KDevelop einmal auszuprobieren, kann man ein kleines „Hallo Welt“-Programm für die Konsole in C++ erstellen. Dazu braucht man nicht einmal Kenntnisse in der Programmiersprache. Die IDE nimmt einem das alles ab. Dazu wählt man im Menü „Projekt“ den Eintrag „Neues Projekt“. Es öffnet sich ein Fenster, in dem verschiedene Projektarten für C und C++ zur Auswahl stehen. Egal für welches Projekt man sich entscheidet, KDevelop erstellt ein Grundgerüst, dass man dann selber erweitern kann. Ein einfaches „Hello World“-Programm findet man im Zweig von „C++“.

<em>Die Auswahl des "Hello World"-Programmes.</em>“ title=“kdevelop-hello-world“ width=“296″ height=“300″ class=“size-medium wp-image-1838″ /><p id=Die Auswahl des Hello World-Programmes.

Unten im Fenster „Neues Projekt“ hat man noch das Feld „Eigenschaften“. Hier muss man seinem Projekt einen Namen geben und den Ordner auswählen, in dem man die Projektdateien speichern will. Man kann dort zum Beispiel „Hallo_Welt“ eintragen und als Ordner „tmp“ im eigenen Homeverzeichnis auswählen, vorausgesetzt, es gibt ihn schon. Mit der Schaltfläche „Weiter“ gelangt man dann zum nächsten Fenster. Hier kann man seinen Namen, E-Mail-Adresse und Versionsnummer des Programms eintragen sowie die Lizenz auswählen. Im nächsten Fenster könnte man noch die Versionsverwaltung wählen, die man benutzen möchte, oder einfach nochmal auf „Weiter“ klicken. Danach folgt ein Fenster mit der „Vorlage für die h-Dateien“ und danach noch eins mit der „Vorlage für die c-Dateien“. Beide kann man überspringen, um im letzten Fenster die Erstellung des Projekts abzuschließen. KDevelop legt dann die Dateien für das Projekt an und zeigt das Gerüst für den Quelltext im Editorfenster.

Damit C++-Programme ausgeführt werden können, muss der Quelltext zuerst mit einem Compiler in eine maschinenenlesbare Form übersetzt werden. Normalerweise ruft man ihn dazu mit verschiedenen Parametern auf. Die Arbeit nimmt einem aber KDevelop ab. Um die Übersetzung zu starten, wählt man im Menüpunkt „Erstellen“ den Punkt „Programm ausführen“. Alternativ kann man auf das blaue Zahnrad in der Werkzeugleiste klicken oder man drückt Shift + F9. Es erscheint ein Fenster mit der Frage „Soll zunächst ‚Automake && Konsorten‘ ausgeführt werden?“ Die Frage bestätigt man mit „Ausführen“ und im unteren Bereich des Fensters tauchen zahlreiche Meldungen auf. Kommt es zu Problemen oder Fehlern, kann man die entsprechende Meldung dort mit der Zeilennummer sehen, in der KDevelop das Problem vermutet. Wenn die Übersetzung wegen eines Fehlers abgebrochen wurde, erscheint eine Meldung wie *** Beendet mit Status 2 ***. Warnungen führen nicht zum Abbruch, sie weisen lediglich auf Stellen hin, die zu Problemen führen könnten. Geht alles gut, wird das Programm direkt in der Konsole gestartet.

Beim ersten Kompilieren werden auf Nachfrage die notwendigen Dateien erstellt.

Beim ersten Kompilieren werden auf Nachfrage die notwendigen Dateien erstellt.

Die ausführbare Datei wird übrigens im Projekt-Ordner unter debug/src gespeichert. Der Name der Datei ist derselbe wie der des Projekts. Wenn man die Datei direkt in der Konsole ausführen möchte, muss man dazu in den entsprechenden Ordner wechseln und das Programm mit dem Befehl ./Hallo_Welt starten. In KDevelop selbst sieht man alle Dateien eines Projekts, wenn man auf der linken Seite weiter unten auf die Schaltfläche „Dateibaum“ klickt. Die IDE hat für das Projekt eine ganze Reihe unterschiedlicher Dateien erstellt. Die allermeisten davon sind für den Einsteiger erstmal völlig uninteressant, da sie Einstellungen für das Übersetzen und Ausführen des Programms beinhalten. Da KDevelop diese Dateien angelegt hat, sind die Einstellungen von Anfang an richtig gesetzt und man braucht keine Änderungen an ihnen vornehmen. Wichtig sind eigentlich nur die Quelltextdatei, die mit der Endung .cpp im Ordner src, und das fertige Programm in debug/src. Eventuell ist auch noch die Projektdatei mit der Endung .kdevelop interessant. Wenn sie aus einem Dateimanager heraus aufgerufen wird, wird das Projekt sofort mit KDevelop geöffnet.

Die zu einem Projekt erstellten Programmdateien.

Die zu einem Projekt erstellten Programmdateien.

Wie warm ist es (in Fahrenheit bitte)?

Wenn einem das „Hallo Welt“-Programm zu simpel ist, kann man den kompletten Inhalt der Quelltextdatei löschen und zum Beispiel ein Programm erstellen, das Fahrenheit in Celsius umrechnet:

#include <iostream>
using namespace std;
 
int main(){
 
 double fahrenheit, celsius;
 cout << "Bitte Temperatur in "<< "Fahrenheit eingeben: ";
 cin >> fahrenheit;
 
 celsius = (5.0 / 9.0) *(fahrenheit-32.0);
 
 cout << fahrenheit << " Grad "<< "Fahrenheit entsprechen ";
 cout << celsius << " Grad "<< "Celsius.";
 
 return 0;
}

Die ersten beiden Zeilen #include <iostream> und using namespace std; sind wichtig, um den Compiler mit den Anweisungen cin und cout bekannt zu machen. Ohne diese Zeilen kann das Programm nicht übersetzt werden. Danach folgt die Funktion main(), die den Startpunkt eines jeden C++-Programms bildet. Sie muss also immer vorhanden sein. Anschließend werden mit double fahrenheit, celsius; zwei Variablen für die Temperaturen Fahrenheit und Celsius definiert. Die Zeichen << und >> sind sogenannte Stream-Operatoren. Bei der Ausgabe wird alles, was rechts vom Operator steht, in den Stream geschrieben, der links von ihm angegeben ist. Bei der Eingabe ist es umgekehrt. Im ersten Fall wird alles auf der rechten Seite des Operators in den Stream cout geschrieben, der es auf dem Bildschirm ausgibt. Im zweiten Fall liest der Stream cin die Eingabe von der Tastatur und legt sie in der Variable fahrenheit ab. In der nächsten Zeile wird die Temperatur in Celsius umgerechnet und anschließend der Inhalt der beiden Variablen zusammen mit dem Text auf dem Bildschirm ausgegeben. Zum Schluss sorgt die Anweisung return 0; dafür, dass das Programm korrekt beendet wird. Jetzt kann man den Quelltext neu kompilieren und anschließend Fahrenheit in Celsius umrechnen lassen.

Probleme in Ubuntu 8.10

KDevelop will in Ubuntu 8.10 „Intrepid Ibex“ nicht so recht kompilieren. Selbst beim simplen „Hallo Welt“-Programm kommt so eine Fehlermeldung:

../libtool: line 2237: X-O0: command not found
../libtool: line 2237: X-g3: command not found
../libtool: line 2406: Xtest2: command not found
X: user not authorized to run the X server, aborting.
../libtool: line 2418: Xtest2: command not found
../libtool: line 2426: mkdir /.libs: No such file or directory
mkdir: cannot create directory `/.libs': Permission denied
make: *** [test2] Error 1
*** Beendet mit Status: 2 ***

Das Problem liegt bei KDevelop 3.5.3 und Libtool, wobei letzteres zu den Autotools von GNU gehört, die wichtig für das Kompilieren sind. In Intrepid Ibex ist es in der Version 2.2.4 installiert, der Source-Tree eines KDevelop-Projekts benutzt aber Libtool in der Version 1.5.24. Damit KDevelop die richtige Libtool-Version erzeugt, muss man das entsprechende Template austauschen.

Der Einfachheit halber kopiert man dazu die Templates in das eigene Homeverzeichnis. KDevelop sucht zunächst dort nach den Templates, bevor es die aus /usr/share benutzt:

cp -R /usr/share/apps/kdevappwizard/ ~/.kde/share/apps/

Danach muss man das Archiv

~/.kde/share/apps/kdevappwizard/template-common/incadmin.tar.gz

entpacken und die alte Datei ltmain.sh durch die neuere /usr/share/libtool/config/ltmain.sh ersetzen. Anschließend wird das Paket erneut geschnürt und wieder incadmin.tar.gz genannt. Das neue Archiv ersetzt dann das alte im Template-Ordner. Wenn man jetzt kompiliert, wird die Datei Libtool in der neuen Version erzeugt und es tauchen keine Fehlermeldungen mehr auf – zumindest solange der Quelltext korrekt ist.

Ein neues Archiv incadmin.tar.gz habe ich bereitgestellt, wenn man es nicht selbst zusammenstellen mag.

Fazit

Auf dem ersten Blick sieht man vielleicht schon, dass einem KDevelop als IDE sehr viel Arbeit abnehmen kann, wenn man sein erstes Programmierprojekt starten will. Man muss sich keine Gedanken über Makefiles, Configure-Skripte und so weiter machen und kann sich stattdessen ganz auf das Programmieren konzentrieren. Wenn man ein Programm für die Konsole schreiben möchte, steht mit dem einfachen „Hallo Welt“-Programm gleich ein Grundgerüst bereit, das man entsprechend erweitern kann.

Aber KDevelop bietet da noch viel mehr. Die Palette reicht vom einfachen Konsolenprogramm über grafischen KDE4-Anwendungen bis zur Vorlage für Linux-Kernelmodule. Was man sich auch für das erste Softwareprojekt vorgenommen hat, KDevelop kann einen dabei sehr gut unterstützen.

Für das schnelle Skripten nebenher eignet sich KDevelop als integrierte Entwicklungsumgebung aber nicht so gut. Hier spielen schlanke IDEs wie Geany (siehe „Bezaubernder Geany — Ein Flaschengeist hilft Programmieren“, freiesMagazin 10/2007) eher ihre Stärken aus.

Geschrieben in freiesMagazin