GTK+ mit Visual Studio verwenden

Nachdem wir Visual Studio gestartet legen wir zunächst wieder ein Konsolenprojekt an, wie in der vorherigen Lektion, klicken auf der 2. Seite des Assistenten auf leeres Projekt und anschließend auf Fertig stellen. Ich habe dieses Beispielprogramm auf c:\gtk gelegt, es steht Dir aber frei das Projekt wo immer Du willst abzulegen.

Nun fügen wir dem Projekt eine Datei hinzu

Da wir nur die Main-Funktion schreiben werden, nenne ich die Datei main.c. Hier wird zwar eine .cpp-Datei (C++) angeboten, aber das spielt keine Rolle.

Abschließend kopiere ich den Quelltext in den Editor:

Wir sehen, dass Visual Studio viele Sachen rot unterstreicht, weil es nichts damit anfangen kann. Wir müssen Visual Studio also so konfigurieren, dass es mit der externen Library umgehen kann.

Den Compiler konfigurieren

Drücke ich jetzt auf die Taste F7, versucht der Compiler das Programm zu kompilieren und meldet bei mir 16 Fehler:

Dabei ist der erste bereits der interessanteste:

Fehler 1  error C1083: Datei (Include) kann nicht geöffnet werden: 
          "gtk/gtk.h": No such file or directory	
          c:\gtk\konsole\konsole\main.c	1

In der ersten Zeile der Datei c:\gtk\konsole\konsole\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 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 Projekteinstellungen:

Und wählen dort Links „C/C++“ und als Unterpunkt allgemein. In den Punkt „Zusätzliche Includeverzeichnisse“ müssen wir jetzt alle Verzeichnisse eintragen und die einzelnen Pfade mit einem Semikolon trennen. Ich habe die Ausgabe von pkg-config in einen Editor kopiert, die „-I“ entfernt und Semikolons eingefügt und die Pfade so in eine Zeile hintereinander geschrieben. Das kann kann dann in diese eine Zeile einfügen.

Falls ihr GTK+ ebenfalls nach c:\opt\gtk entpackt habt, dürfte diese Zeile hier funktionieren: c:/opt/gtk/include/gtk-2.0; c:/opt/gtk/lib/gtk-2.0/include; c:/opt/gtk/include/atk-1.0; c:/opt/gtk/include/cairo; c:/opt/gtk/include/gdk-pixbuf-2.0; c:/opt/gtk/include/pango-1.0; c:/opt/gtk/include/glib-2.0; c:/opt/gtk/lib/glib-2.0/include; c:/opt/gtk/include; c:/opt/gtk/include/freetype2; c:/opt/gtk/include/libpng14

Anderenfalls geht mit der Konsole dorthin, wo ihr das GTK+-Archiv ausgepackt, dort in das Verzeichnis bin habt und gebt erneut pkg-config.exe –cflags gtk+-2.0 ein.

Am Schluss sollte es etwa so aussehen:

Wenn ihr auf das kleine Dreieck rechts drückt, könnt ihr mit „Bearbeiten“ einen kleinen Dialog öffnen, in dem ihr die Pfade einzeln eingeben könnt. Dieser Dialog sollte dann etwa so aussehen:

Wenn wir alles mit Okay bestätigt haben, sollte Visual Studio anfangen zu arbeiten und die Fehler sollten größtenteils verschwinden. In jedem Fall sollte die rote Unterstreichung der „#include“-Zeile oben verschwinden. Um sicher zu gehen, lassen wir den Compiler laufen lassen indem wir „F7“ drücken oder oben im Menü über Debuggen→Projektmappe erstellen aufrufen. Visual Studio sollte durchkompilieren und nun folgende Fehler anzeigen:

Damit hat das kompilieren schon mal geklappt. Nun müssen wir noch den Linker kompilieren.

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:

Hierfür rufen wir wieder die Projekteinstellungen auf und wählen diesmal auf der linken Seite „Linker“ und dort „Eingabe“. Auf der rechten Seite finden wir nun „Zusätzliche Abhängigkeiten“:

Tatsächlich, unser Programm kann ja nur arbeiten, wenn GTK+ verfügbar ist. Wir tragen nun also alle Abhängigkeiten von GTK+ ein. Auch hier kann uns das mitgelieferte „pkg-config“ helfen:

Die sind ebenfalls für den GCC-Compiler gedacht, der -L Parameter gibt den Pfad an und die -l Parameter die Namen der Abhängigkeiten. Wir müssen nun beides kombinieren und wieder in eine Zeile packen - die -l müssen weg und stattdessen Semikolons zwischen die Pfade. Zwei kleine Gemeinheiten: Damit Visual Studio euch versteht, muss hinter jeder Library auch noch „.lib“ angefügt werden und die gdi32.lib steht bereits von Visual Studio selbst an der richtigen Stelle eingetragen. Die muss also beim kopieren weggelassen werden!

Wenn ihr eure Libs unter c:\opt\gtk\lib habt sollte diese Zeile funktionieren: c:/opt/gtk/lib/gtk-win32-2.0.lib;c:/opt/gtk/lib/gdk-win32-2.0.lib;c:/opt/gtk/lib/atk-1.0.lib;c:/opt/gtk/lib/gio-2.0.lib;c:/opt/gtk/lib/pangowin32-1.0.lib;c:/opt/gtk/lib/pangocairo-1.0.lib;c:/opt/gtk/lib/gdk_pixbuf-2.0.lib;c:/opt/gtk/lib/pango-1.0.lib;c:/opt/gtk/lib/cairo.lib;c:/opt/gtk/lib/gobject-2.0.lib;c:/opt/gtk/lib/gmodule-2.0.lib;c:/opt/gtk/lib/gthread-2.0.lib;c:/opt/gtk/lib/glib-2.0.lib;c:/opt/gtk/lib/intl.lib.

Sicherheitshalber klickt ihr in das Feld „Zusätzliche Abhängigkeiten“, ihr löscht nichts daraus, sondern geht bis ganz an den Schluss, schreibt ein Semikolon dahinter und hinter das Semikolon schreibt ihr eure Abhängigkeiten.

Auch hier gibt es einen kleinen Dialog, der durch das kleine Dreieck am Ende der Zeile „Zusätzliche Abhängigkeiten“ mit der Menüoption „Bearbeiten“ erreicht werden kann.

Dabei bitte nicht übersehen, dass da noch viele weitere Abhängigkeiten bereits von Windows eingetragen sind. Bei der Fenstergröße habe ich nach unten gescrollt, um die GTK+-Abhängigkeiten zu zeigen.

Das war's. Nun alles mit Okay bestätigen.

Fertig

Nun solltet ihr erneut kompilieren und ungefähr das erhalten:

Hier steht auch, dass wohin die ausführbare Datei geschrieben wurde.

Programm starten

Mit der Taste F5 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.

Zu Visual Studio

Visual Studio ist in vielen Bereichen eine recht angenehme Entwicklungsumgebung, verlangt in der 2010er Version allerdings auch sehr viel Rechenleistung. Was hier gezeigt wurde, ist problemlos auf ältere Versionen von 2003, 2005 oder 2008 übertragbar. Sobald das Projekt größer wird, verheddert sich VS2010 auch gerne schon mal.

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.