GTK+ mit Code::Blocks verwenden

Wir starten Code::Blocks und legen zunächst wieder ein Konsolenprojekt an, wie in der vorherigen Lektion beschrieben.

wählen das Konsoleprojekt. Die Auswahl ob C oder C++ ist nicht wirklich wichtig, aber wir programmieren C, also wählen wir es auch. Im Nachfolgenden Dialog konfigurieren wir den Ort, an der wir das Projekt auf die Festplatte legen. Ich habe mir ein Verzeichnis „gtk“ direkt auf dem Laufwerk C: erstellt, indem ich das Projekt 'codeblocks' verwende. Ich verwendete den Namen Codeblocks, weil ich das gleiche Projekt für verschiedene Entwicklungsumgebungen aufziehe. Vielleicht wählt ihr einen sinnvolleren Namen, wie „lib-test“ oder ähnliches.

Die anschließende Build-Konfigurationen „Debug“ und „Release“ übernehmen wir und klicken auf Finish.

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 sie ö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 STRG+F9, versucht der Compiler das Programm zu kompilieren und meldet bei mir 10 Fehler und 7 Warnings:

Dabei ist der erste bereits der Interessanteste:

C:\gtk\codeblocks\main.c   1 
          error: gtk/gtk.h: No such file or directory|

In der ersten Zeile der Datei C:\gtk\codeblocks\main.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 einzelenn 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ünden 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 Code::Blocks

Code::Blocks ist derzeit (Januar 2012) schon leicht ergraut, die aktuelle Version ist von Mai 2010. Für den Einstieg ist die Entwicklungsumgebung aber vollkommen ausreichend und wie GTK+ mit Codelite verwenden 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.