# Kapitel 8. Projekte

# 8.1. Projekttypen

## 8.1.1. Programme

KDevelop erzeugt standardmäßig Projektdateien mit der Dateierweiterung .kdevprj. Diese Datei enthält alle Projektinformationen, sodaß Sie darauf achten sollten sollten, sie nicht zu löschen. Die Datei wird im Hauptverzeichnis des Projekts gespeichert und muß zum Laden des Projekts geöffnet werden. Die Projektdatei enthält alle Informationen ihrer Dateien wie Dateieigenschaften, Installationspfade, Distributionsstatus und die Compileroptionen (CXXFLAGS). Das Setzen von Dateioptionen erlaubt Ihnen anzugeben, wohin die Dateien installiert werden sollen.

Mit dem KAppWizard können Sie ein neues Applikationsprojekt nach dem gewünschten Typ anlegen. Zur Zeit generiert der KAppWizard vier verschiedene Arten von Rahmenapplikationen:

- eine SDI-(Single Document Interface, Einzeldokument-Schnittstelle) KDE-Applikation inklusive Menüleiste, Werkzeugleiste und Statuszeile. Dieser Typ enthält alle Elemente zur einfachen Erweiterung zu einer vollständigen KDE-Applikation. Der Programmrahmen verwendet bereits Statuszeilen-Hilfenachrichten, wie sie aus kommerziellen Produkten bekannt sind und wie auch KDevelop sie verwendet. Aus Sicht des Programmierers ist dieses Rahmenprogramm an das MVC (Modell-Ansicht-Controller) Konzept durch Aufteilung des Codes in drei Klassen ausgelegt. Dieser Applikationstyp bietet bereits eine logische Strukturierung zur Erstellung von Anwendungen mit einer graphischen Benutzerschnittstelle.

- ein KDE-basiertes Rahmenprogramm. Dieser Applikationstyp bietet die größte Flexibilität für diejenigen, die ihr Programm von Grund auf entwickeln möchten, kann aber auch als Ausgangspunkt von Wizards und Modulen verwendet werden.

- ein rein Qt-basiertes Rahmenprogramm. Für Entwickler, die nur die Qt-Bibliothek als graphische Benutzerschnittstelle verwenden möchten, bieten wir dieses intelligente Rahmenprogramm, um die Applikationsenwicklung zu vereinfachen. Da die Qt-Programmierung vollständig unterstützt wird, sollten Sie keine Probeme bei der Erstellung vollständiger, rein Qt-basierter Applikation haben.

- ein C++ Rahmenprogramm. Dieser Applikationstyp ist für die Entwickler gedacht, die ein Terminal-basiertes C++ Programm schreiben möchten. Enfernen Sie einfach die Zeile mit "Hello World" in der main()-Funktion und konstruieren Sie Ihre Klassen wie gewöhnlich mit KDevelop.

- ein C-Rahmenprogramm. Dieser Programmtyp ist auf die Verwendung des C-Compilers beschränkt.

Desweiteren erlaubt es KDevelop, Projekte für KDE 2 und Qt 2.x zu erstellen. Diese machen, bevor Sie ein Projekt erstellen, die Installation der benötigten Bibliotheken, sowie das Setzen des entsprechenden Installationspfades im KDevelop Setupdialog, erforderlich (siehe auch Grundsätzliche Konfiguration), damit sichergestellt ist, daß alles automatisch funktioniert. Der KDevelop 1.2 Applikations-Wizard enthält zusätzlich ein GNOME-Projekttyp, damit Entwickern die Möglichkeit gegeben wird, mit KDevelop GTK+-basierte Programme zu erstellen.

Zusätzlich bietet sich KDevelop an, um mit bereits existierenden Projekten zu arbeiten. Diese können jede Option haben, die der Programmierer selbst in configure und Makefiles gesetzt hat. Soweit es die Ausführung und den Erstellungsprozess betrifft, sind zur Zeit nur die gleichen Strukturen wie bei der Erstellung von Rahmenprogrammen erlaubt. Erzeugen Sie ein eigenes Projekt mit dem Applikations-wizard und fügen Sie Ihre Dateien dem Projekt hinzu, um die Bearbeitung mit dem Klassenbrowser zu ermöglichen.

Um den Erstellungsvorgang sicherzustellen, muß Ihr Projekt alle Quellcodes in einem Unterverzeichnis bereithalten, das dem kleingeschriebenen Projektnamen entspricht; die Ausführung der Binärdatei ist ebenfalls auf den Namen des kleingeschriebenen Projektnamens beschränkt.

Beachten Sie, das KDevelop selbst keine Informationen in die Makefiles oder Konfigurationsdateien schreibt - Sie sind für das Verhalten des Projekts vollständig selbst verantwortlich.

## 8.1.2. Bibliotheken

Ein allgemeiner Projekt-Typ zur Erstellung von Bibliotheken ist zur Zeit nicht verfügbar. Andererseits ist es jedoch nicht unmöglich mit KDevelop Bibliotheken zu erstellen. Hier erhalten Sie ein paar Richtlinien und Anleitungen:

- Wann immer Sie in Ihrem Projekt-Unterverzeichnis ein weiteres Unterverzeichnis erstellen, das Quellcodes enthält, wird KDevelop daraus eine statische Bibliothek erzeugen. Das bedeutet, das statische Bibliotheken grundsätzlich schon durch das Projektmanagement unterstützt wird, um die Projektdateien übersichtlicher zu sortieren. Beachten Sie, das die statische Bibliothek später ein Teil der Binärdatei wird und daher nicht installiert wird.

- Um eine shared library (dynamische Bibliothek) zu erzeugen, bietet Ihnen KDevelop einen einfachen Weg an, um eine wie oben beschriebene statischen Bibliothek zu einer dynamischen zu konvertieren: Öffnen Sie den RFV am linken Rand des KDevelop-Hauptfensters und wechseln Sie zum erzeugten Unterverzeichnis. Dort benutzen Sie den rechten Maus-Button über dem Unterverzeichnis. Das Popup-Menü bietet dann die folgenden Optionen:

  - Makefile.am aktualisieren

  - Zur statischen Bibliothek machen

  - Zur dynamischen Bibliothek machen

  Verwenden Sie "Zur dynamischen Bibliothek machen", um die standardmäßig erzeugte statische Bibliothek zu einer dynamischen zu konvertieren. Sie können Ihre Entscheidung später auch rückgängig machen, falls Sie sich dazu entscheiden sollten, doch eine statische Bibliothek zu verwenden- wiederholen Sie einfach die selben Schritte und wählen Sie "Zur statischen Bibliothek machen".

## 8.1.3. Mehrere Zielobjekte

Für manche Projekte reichen die Möglichkeiten von KDevelop zur Zeit noch nicht aus. Dies sind Projekte, die mehrere Zielobjekte beinhalten, wie Pakete, die mehrere Anwendung enthalten. Da Kommandos wie "Ausführen" erfordern, daß nur ein Ziel vom Entwickler erstellt wird, werden solche Projekte nur in der Weise unterstützt, daß Sie Ihre eigenen Einträge in die Makefile.am 's vornehmen und Ihre eigenen Verzeichnisse für die zu erstellenden zusätzlichen Bibliotheken oder ausführbaren Dateien erstellen müssen. Dennoch ruft ein Erstellungsprozeß immer Ihr Makeprogramm auf, unabhängig davon welche Ziele tatsächlich erstellt werden; diese Funktionen können also weiterhin verwendet werden (mit der Einschränkung, daß das Erstellen aus dem Haupt-Projektverzeichnis heraus aufgerufen wird).

Eine weitere Methoden mit diesem Typ von Projekt umzugehen und denoch den Zugriff auf die ausführbaren Dateien zu erhalten, ist das Erstellen von leeren Projekten mit anschließendem Verschieben der Unterverzeichnisse mit den kdevprj Dateien in das Verzeichnis, das später alle Ihre Quellen enthalten wird. Sie könnten dann jedes Ziel unabhängig von den anderen mit Hilfe der zugehörigen kdevprj Datei laden; dies ermöglicht Ihnen auch das Ausführen und Debuggen des Zieles.

Mehrere Binärdateien oder Bibliotheken innerhalb Haupt-Projektverzeichnisses sind möglich, wenn Sie sich an die in Projekt Hacking erläuterten Regeln und an die folgenden Richtlinien zum Editieren von Makefile.am im Projektverzeichnis halten (alle Modifikationen müssen außerhalb der KDevelop write area erfolgen) :

- Fügen Sie das Ziel bin&_;PROGRAMS hinzu, wenn es eine auführbare Datei ist

- Fügen Sie Ihre Bibliotheksdeklaration hinzu, wenn es sich um eine dynamische Bibliothek handelt

- Fügen Sie dieselben Deklarationen wie beim Originalprojekt hinzu:

  - NeuesZiel&_;METASOURCES

  - NeuesZiel&_;LD&_;FLAGS

  - DISTCLEANFILES

  - Kopieren Sie die messages Einträge und ersetzen Sie Ziel&_;SOURCES Ziel.pot durch NeuesZiel&_;SOURCES NeuesZiel.pot

- Fügen Sie Ihre Quellcodes, die sie für Ihre Binärdatei oder Bibliothek benötigen, wie im KDevelop Schreib-Bereich aufgeführt außerhalb des Schreibbereiches hinzu.

- Um statische Bibliotheken zu installieren, erzeugen Sie die Bibliothek mit KDevelop's automatischer Generierung innerhalb von Unterverzeichnissen. Dann ändern Sie die Makefile.am außerhalb des Schreibbereichs gemäß den von Ihnen benötigten Einstellungen.