gtkmm Problem
-
Hi all,
ich habe GTK+ und gtkmm installiert.
Nun will ich in Dev-C++ ein einfaches Projekt Compilieren, aber er findet die gtkmm.h nicht.
#include <gtkmm.h> müsste doch funktionieren, oder?
MfG
-
ok, ich habe nun diese Schritte http://www.c-plusplus.net/forum/viewtopic-var-t-is-165460.html
befolgt. Aber es geht immer noch nicht. 502 fehler. Ich bin ratlos.
-
kingfinn schrieb:
Ich bin ratlos.
Wir sind auch ratlos, wenn du uns nicht verräts, welche Fehler auftreten.
Ach ja: Schmeiß die IDE weg und nimm was halbwegs modernes (die letzte Version von Dev-C++ ist über 4 Jahre alt).
-
Ich schätze mal, du hast die Include-Pfade und die Binary-Libs nicht in deiner IDE angegeben. Weil alles andere ziemlich mysteriös wäre.
Aber auf eine andere (moderne) IDE würde ich trotzdem umsteigen:
http://www.kharchi.eu/wiki/doku.php?id=cpp:tools#entwicklungsumgebungenDa du Windows benutzt, wäre eine von diesen zu empfehlen:
Code Blocks, Codelite oder VisualC++ Express Edition.
-
Unter Linux muss ich folgendes einbinden:
#include <gtkmm-2.4/gtkmm.h>
-
m_power schrieb:
Unter Linux muss ich folgendes einbinden:
#include <gtkmm-2.4/gtkmm.h>
Das ist aber falsch, weil das "nicht wartbar" ist! Du hast den Include-Pfad eine Ebene zu hoch angesetzt.
-
Was dann?
Umlinken?ln -s /usr/include/gtkmm-2.4/gtkmm/ /usr/include/gtkmm
-
Kenne mich mit Linux-Shell nicht aus (glaube auch nicht das du das Links umbiegen mußt). Aber du müsstest ja irgendwo sowas stehen haben (z.B. in deinem Build-Script oder IDE), um den Pfad deinem Compiler bekannt zu machen:
INCLUDE=/usr/include/
Deshalb mußt du auch die gtkmm-2.4 mit angeben:
#include <gtkmm-2.4/gtkmm.h>
Aber eigentlich müsstest du das so konfigurieren:
INCLUDE=/usr/include/gtkmm-2.4/
Weil dann sucht der Compiler in dem Verzeichnis nach den Headern, was dir sowas ermöglichen sollte:
#include <gtkmm.h>
Das ermöglicht dir später mal einfacher auf eine neue gtkmm-Version umzusteigen, ohne deinen C++-Sourcecode ändern zu müssen. Dazu würdest du später nur den Include-Pfad anpassen müssen:
INCLUDE=/usr/include/gtkmm-2.5/
Eine Stelle ändern ist einfacher als viele ändern zu müssen.
-
Super,
Danke für diese Antwort!
-
UPDATE: Ich habe mir nun Netbeans für mein Ubuntu besorgt. Welche Include Verzeichnisse muss ich angeben?
-
Um herauszufinden was du an Includeverzeichnissen angeben musst, tipp einfach pkg-config gtkmm-2.4 --cflags ein:
gpc@desktop:~$ pkg-config gtkmm-2.4 --cflags
-D_REENTRANT -I/usr/include/gtkmm-2.4 -I/usr/lib/gtkmm-2.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -I/usr/include/giomm-2.4 -I/usr/lib/giomm-2.4/include -I/usr/include/gdkmm-2.4 -I/usr/lib/gdkmm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/include/atkmm-1.6 -I/usr/include/gtk-2.0 -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/cairomm-1.0 -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/atk-1.0Und um herauszufinden gegen was du linken musst, tipp pkg-config gtkmm-2.4 --libs ein:
gpc@desktop:~$ pkg-config gtkmm-2.4 --libs
-lgtkmm-2.4 -lgiomm-2.4 -lgdkmm-2.4 -latkmm-1.6 -lgtk-x11-2.0 -lpangomm-1.4 -lcairomm-1.0 -lglibmm-2.4 -lsigc-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lgio-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0
-
thanx ! gibt es nun auch noch eine methode, diese automatisiert hinzuzufügen?
-
Ich weiß jetzt nicht, inwiefern Netbeans das auflöst, aber eigentlich müsste es reichen:
`pkg-config gtkmm-2.4 --cflags`
(mit den ``` ) zu den Compiler-Flags und:
`pkg-config gtkmm-2.4 --libs`
(mit den ``` ) zu den Linker-Flags zu schreiben. Funktioniert jedenfalls bei Eclipse, da er den Compiler-Befehl und die Flags scheinbar direkt an die Shell weitergibt und diese den
Befehl
auflöst.