Donnerstag, 4. März 2010

CDT und GTKMM Entwicklung

Nachdem ich mich entschlossen hatte, mich an einem Filebrowser mit gtkmm zu versuchen, traf ich auf ein weiteres Problem, das mich an der Entwicklung zuerst abhielt.
Es gibt keine brauchbare IDE, die sich für die Entwicklung mit gtkmm verwenden lässt. Die einzig wahre Umgebung, die einen nicht mehr behindert als hilft, ist wieder mal Eclipse. Das CDT Plugin eignet sich ganz gut zum C/CPP programmieren, doch wie immer gibts irgendwo einen Haken... Im Falle CDT ist das der Dialog zum Inkludieren von Headern.

Besagter Dialog ist nur in der Lage, einzelne Verzeichnisangaben zu verarbeiten. Dies ist extrem mühsam, wenn man - wie im Fall gtkmm - sehr viele Includes braucht. Wenn man die Includes per pkg-config (oder händisch) in die Build-Optionen stellt, kann man das Programm zwar kompilieren, doch gibt es keine Code-Vervollständigung, die einem das Leben doch um einiges leichter macht.

Not macht erfinderisch, also machte ich mich auf die Suche nach der Projektdatei, die von CDT erstellt wird (.cproject). Ein Haufen XML sprang mich an...

Um das Problem zu lösen, gab ich CDT einen relativ eindeutigen Eintrag in den Include Dialog (bspw. !fork!). Dies kann man nun in der Projektdatei suchen. Weiters habe ich ein Skript erstellt, welches Include-Tags im CDT-Format liefert:
for i in `pkg-config $1 --cflags` 
do echo $i | sed "s/-I\(.*\)/<listOptionValue builtIn=\"false\" value=\"\1\" \/>/"
done
Benutzt wird dieses Skript wie folgt: gtkmm-2.4
Voraussetzung ist, dass pkg-config installiert ist, da die Include-Verzeichnisse davon geliefert werden.

Da jetzt die benötigten Einträge auf der Konsole liegen, ist es an der Zeit, die Ausgabe zu kopieren und an der Stelle in .cproject einzufügen, an der wir unseren "Anhaltspunkt" gesetzt haben. Jetzt nochmal in Eclipse in die Projekteigenschaften, einen weiteren Include-Eintrag hinzufügen, diesen wieder entfernen, apply clicken und auf die Frage, ob ein neuer Index erstellt werden soll, mit ja antworten. Jetzt sollte das Projekt sämtliche Includes aufweisen, die nötig sind, um das Programm zu kompilieren können und die Codevervollständigung zu nutzen.

Allein das Hinzufügen der libraries ist noch notwendig, um das Programm erfolgreich kompilieren zu können.

Wenn mir mal fad ist, werd ich mir anschauen, ob ich CDT nicht erweitern kann.

Kommentare: