GTK+ mit Codelite verwenden

Codelite richte ich hier unter Linux ein. Wenn Du Codelite unter Windows benutzen willst, lies Dir bei Fragen zusätzlich die sehr ähnliche Anleitung zu Code::Blocks durch, die ich unter Windows durchgeführt habe.

Wir starten CodeLite und legen zunächst wieder einen Workspace an, wie in der vorherigen Lektion beschrieben:

und fügen anschließend ein Konsolenprojekt hinzu:

Wir wählen in der Kategorie „Console“, wählen ein „Einfaches Executable“, die wir mit dem C-Compiler gcc kompilieren wollen. Anschließend tragen wir den Namen des Projektes ein. Ich nehme hier „msgbox“. Die Auswahl ob C (gcc) oder C++ (g++) ist hier nicht wirklich wichtig, aber wir programmieren C, also wählen wir es auch. Wir können einen anderen Projektpfad nehmen, ich habe den Pfad jedoch nicht verändert:

Links unterhalb von Workspace wird das Projekt (bei mir „codeblocks“) hinzugefügt und unterhalb des Ordners „Sources“ findet sich die Datei „main.c“. Diese doppelklicken wir und es öffnet sich die Datei. Zunächst löschen wir diesen Beispielquellcode komplett (STRG+A und anschließend Entfernen drücken) und kopieren den zu kompilierenden Quelltext der vorherigen Seite ein:

Den Compiler konfigurieren

Drücke ich jetzt auf die F7 (oder im Menü „Build“ auf „Build Project“), versucht der Compiler das Programm zu kompilieren und meldet bei mir 10 Fehler und 7 Warnings:

FIXME

Dabei ist der erste bereits der Interessanteste:

/home/xin/.codelite/html/gtktest/gtk/main.c:1:21: 
          error: gtk/gtk.h: Datei oder Verzeichnis nicht gefunden

FIXME

In der ersten Zeile der Datei /home/xin/.cirtmain.c kann er die Datei „gtk/gtk.h“ nicht finden. Wir müssen die Include-Pfade setzen, so dass er das „gtk“-Verzeichnis finden kann. Wir haben das GTK+-Archiv ja nach c:\opt\gtk ausgepackt und finden dort nun auch das Verzeichnis include. Darin befinden sich die Header-Dateien der einzelnen Libraries, die zu GTK+ gehören.

Nun können wir leider nicht einfach nur dieses include-Directory angeben, sondern müssen die Pfade für die einzelnen Libs angeben. Das Verzeichnis für GTK+ liegt zum Beispiel in c:\opt\gtk\include\gtk-2.0.

Im Prinzip kann man einfach sagen, dass wir alle Verzeichnisse angeben müssen. Welche genau, hat uns pkg-config ja bereits gesagt.

Jeder Pfad, der hinter „-I“ (für Includes) steht dient dem GCC-Compiler als Include-Pfad. Und die müssen wir jetzt auch Visual Studio mitteilen. Leider in Handarbeit.

Dafür gehen wir in die Buildeinstellungen:

Und wählen dort den Reiter „Search Directories“ aus und darin den Reiter „Compiler“. Hier müssen wir nun alle Include-Pfade eintragen. Falls ihr GTK+ ebenfalls nach c:\opt\gtk entpackt habt, sollte das etwa so aussehen:

Wenn wir alles mit Okay bestätigt haben, können wir den Compiler erneut laufen lassen, indem wir „STRG+F9“ drücken oder oben im Menü „Build“ den Menüeintrag „Build“ aufrufen. Codeblocks sollte durchkompilieren und nun folgende Fehler anzeigen:

Er kennt ein main.o, damit hat das Kompilieren schon einmal geklappt. Nun müssen wir noch den Linker konfigurieren.

Den Linker konfigurieren

Im Prinzip läuft es hier vergleichbar wie mit den Include-Verzeichnissen. Nun müssen wir die Librarys suchen suchen, die hinzugelinkt werden müssen und die ebenfalls im GTK+-Archiv mitgeliefert wurden:

Um die benötigten Libs herauszufinden, kann uns das mitgelieferte „pkg-config“ helfen:

Zunächst rufen wir wieder die Build-Options auf und beginnen mit den „Search-Directories“ und klicken darin auf „Linker“. Dort tragen wir den Pfad der Libs ein, was in der Ausgabe von „pkg-config“ der Option -L entspricht:

Anschließend wechseln wir zu den „Linker Settings“ und müssen dort die Namen der zu linkenden Libraries eingeben. Dies entspricht den -l-Ausgeben von „pkg-config“:

Tatsächlich, unser Programm kann ja nur arbeiten, wenn GTK+ verfügbar ist. Wir tragen nun also alle Abhängigkeiten zu GTK+ ein.

Eine Sache haben wir bisher bei der Ausgabe von „pkg-config“ ignoriert: „-mms-bitfields“. Wenn wir dieses Flag dem GCC-Compiler nicht mitteilen, wird er Bitfelder nicht nach den Wünschen von MS (Microsoft) aufbauen und GTK+ wird lediglich einen Dialog öffnen, der darauf hinweist. Wenn wir auf den Reiter „Compiler Settings“ klicken, finden wir unter dem Reiter „Compiler Flags“ eine Liste von Flags, die man einfach ein und ausschalten kann. „-mms-bitfields“ ist leider nicht dabei, daher wählen den Reiter „Other Options“ und tragen es dort ein:

Nun muss nur noch mit Okay bestätigt werden.

Fertig

Nun solltet ihr erneut kompilieren und ungefähr das erhalten (Die Zeile „Compiling: main.o“ sollte bei der exakten Abarbeitung der Anleitung fehlen):

Hier steht auch, dass wohin die ausführbare Datei innerhalb des Projektes auf die Festplatte geschrieben wurde.

Programm starten

Mit der Taste F8 kann das Programm gestartet werden. Hierfür sollte sich eine Konsole öffnen (wir haben ja eine Konsolenanwendung) und anschließend dieses Meldung:

Wenn wir nun in die Konsole gehen und in das Verzeichnis wechseln, in der Visual Studio das Executable geschrieben hat, so können wir das Programm ebenfalls aufrufen. Die Datei heißt nun 'codeblock.exe', weil ich das Projekt Codeblocks genannt habe, um es von den anderen Entwicklungsumgebungen abzugrenzen. Den Ausgabedatei lässt sich auch in den Properties unter Build-Targets ändern, was ich hier allerdings nicht mehr getan habe.

Zu CodeLite

Für den Einstieg ist die Code::Blocks-Alternative CodeLite vollkommen ausreichend und für alle gängigen Plattformen (Linux, Mac, Windows) verfügbar, was einen Vorteil zu GTK+ mit Visual Studio verwenden und XCode darstellt.

Wer an dieser Stelle des Tutorials angekommen ist, kann und sollte sich nun auch mit einer Entwicklungsumgebung beschäftigen. Trotzdem darf man konsolenbasierte Buildmethoden nicht aus den Augen verlieren.