C mit Eclipse und GTK
-
Ich programmiere unter Windows und Linux in C und benutze dazu die Kombination von Eclipse+CDT mit GCC bzw. MinGW.
Nun möchte ich einige GUI-Programm erstellen und habe dazu GTK+ "asuerwählt", und zwar das All-In-One-Paket, das sich selbst installiert.
Unter Eclipse wähle ich für neue Projekte ANSI-C-Projekt aus, weil da Eclipse das Make-Manegement übernimmt. Klappte bisher prima, bloß will Eclipse oder MinGW oder beides GTK nicht akzeptieren.
Obwohl ich jede Menge Pfade und Flags eingetragen habe, komme ich nicht weiter.
zB: Compiler-Miscellaneous:
-c -fmessage-length=0 ´pkg-config --cflags gtk+-2´
und Linker-Miscellaneous:
´pkg-config --libs gtk+-2.0´So kriege ich unter Windows diese Fehlermeldungen:
**** Internal Builder is used for build ****
gcc -IC:/gtk/include/glib-2.0 -IC:/gtk/include/gtk-2.0
-O0 -g3 -Wall -c -fmessage-length=0 ´pkg-config --cflags gtk+-2.0´ -osrc\XXX.o ..\src\XXX.c
cc1.exe: error: unrecognized command line option "-fcflags"
gcc: $$(pkg-config: No such file or directory
gcc: gtk+-2.0): No such file or directory
Build error occurred, build is stopped
Time consumed: 297 ms.GTK liegt bei mir im Ordner c:\GTK
-
Das Problem hatte ich auch. Während Eclipse unter Linux die ganze Zeile mit dem
gcc
an die Shell weitergibt, die in diesem Fall den eingebetteten Befehl mitpkg-config ...
expandiert, passiert das unter Windows nicht (ich weiß jetzt nicht, inwiefern die PowerShell das expandiert).
Einfach den pkg-config-Befehl in die Eingabeaufforderung eingeben und die Resultate nach Eclipse kopieren.
-
Bei einer Eingabe im (win)DOS-Prompt erhalte ich diese Meldung:
C:\>pkg-config --cflags gtk+-2.0
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' foundAuch Veränderungen der Eingabezeile erbrachten nur ähnliche Meldungen.
Die GTK-Pfade sind alle gesetzt.
-
Hm haste denn mal versucht, was in der Meldung steht? Also gtk+-2.0.pc suchen und die Umgebungsvariable
PKG_CONFIG_PATH
auf deren Pfad setzen?
-
ich habe den Pfad für c:\gtk\lib\pkconfig bei PKG_CONFIG_PATH und bei PATH gesetzt (wir verstehen uns recht: es geht um Windows), aber ich erhalte die gleichen Meldungen wie am Anfang, sowohl in der Kommandozeile als auch unter Eclipse.
-
Ich wage es nochmal mit einem erneuten Hilferuf:
Inzwischen hab ichs geschafft, dass der pkg-config-Aufruf so expandiert wurde:
pkg-config --cflags --libs gtk+-2.0 -mms-bitfields -IC:/GTK/include/gtk-2.0 -IC:/GTK/lib/gtk-2.0/include -IC:/GTK/include/atk-1.0 -IC:/GTK/include/cairo -IC:/GTK/include/pango-1.0 -IC:/GTK/include /glib-2.0 -IC:/GTK/lib/glib-2.0/include -IC:/GTK/include/freetype2 -IC:/GTK/include -Wl,-luuid -LC:/GTK/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -limm32 -lshell32 -lole32 -latk-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpangoft2-1.0 -lpangowin32-1.0 -lgdi32 -lfreetype -lz -lfontconfig -lpango-1.0 -lm -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl
Was davon genau gehört nun unter Miscellaneous von C/C++-Build?
Ich habe es mit allem und Teilen davon versucht.
Und soll das Ganze direkt eingefügt oder in irgendwelche Apostrophen gefasst werden? (Ich habs mit ` ´ und ' versucht)Was mache ich falsch?
-
Direkt einfügen, ohne
. pkg-config solltest du aber zwei Mal aufrufen: einmal mit --cflags (das Ergebnis kommt zu den Compiler-Flags) und einmal mit --libs (das Ergebnis kommt zu den Linker-Flags).
-
Hab ich gemacht, danke.
Ich hatte zuerst das Ganze nur einmal versucht, und mit "Umrahmung", jetzt direkt übernommen. Ähnliches nochmal für den Linker. Es läuft jetzt viel besser, doch einen Haken gibt es leider noch, alles ok bis auf:cannot find -lc:/gtk/lib/glib-2.0
das Verzeichnis gibt es aber, allerdings ist da nur ein include-Ordner drin. Ist das zuwenig?
-
Bin inzwischen schon wieder etwas weiter, wenn auch immer noch nicht fehlerfrei:
cc: gowin32-1.0: No such file or directory
edit: war ein schreibfehler (mir war ein leerzeichen daziwschengerutscht), es bleibt beim obigen Fehler
cannot find -lc:/gtk/lib/glib-2.0
-
Wie wäre es einfach mal mit Copy&Paste von der Konsole? Das ist kein kleines L sondern ein großes I wie Include-Directory.
-
Ist geklärt, hatte auch Copy&Paste verwendet, mir ist aber wohl beim "Feintuning" was daneben geraten.
Diese Fehlermeldung ist weg, jetzt meldet er fürs Einbinden von <gtk/gtk.h> Erfolg.Also ich frohgemut die erste GTK-Anweisung eingefügt. Bisher nur
int main(int argc, char* argv[]) {return 0;}
jetzt erweitert um die Zeile:
gtk_init(&argc, &argv);
Und schon zur Strafe für die Vorfreude diese Meldung:
undefined reference to `gtk_init_abi_check'
-
Ganz blöde Frage: Diesmal alles richtig rüberkopiert?
-
Ja.
Ich hab sogar alles nochmal für ein neues Projekt wiederholt, um ganz sicher zu gehen.
Sobald ich an den Wortschatz von GTK gehe, gibt es Fehlermeldungen wie
"undefined reference to ..."
Fehlen da irgendwelche Zusatzangaben für Compiler/Linker, und wenn ja, welche?
-
Bin inzwischen wieder etwas weiter:
Nun habe ich unter Project-> Properties-> C/C++ Build -> Linker
noch alle Libraries eingetragen.
Und siehe da, es funktioniert, das erste Fenster öffnet sich. Bis jetzt scheitn alles zu klappen.Danke an "devkid" für die Erleuchtung zum richtigen Weg.
-
George3D schrieb:
Nun habe ich unter Project-> Properties-> C/C++ Build -> Linker
noch alle Libraries eingetragen.devkid schrieb:
pkg-config solltest du aber zwei Mal aufrufen: einmal mit --cflags (das Ergebnis kommt zu den Compiler-Flags) und einmal mit --libs (das Ergebnis kommt zu den Linker-Flags).
...
-
Hab ich:
Zweimal in der Konsole pkg-config aufgerufen, einmal mit --cflags, einmal mit --libs,
die Expansionen jeweils in die Flagfelder von Miscellaneous eingefügt.
-
Die Zitate waren jetzt eher als "Warum nicht gleich so?" gedacht.