GTK Projekte mit gtkmm [gelöst]

Alles was mit C/C++ unter NetBeans zu tun hat

Moderator: wegus

Antworten
Benutzeravatar
wegus
Beiträge: 458
Registriert: 26.09.2006, 09:07

GTK Projekte mit gtkmm [gelöst]

Beitrag von wegus » 12.09.2013, 18:56

Hmpf, ich wollte mir eigentlich ein bisschen GTK+ C++ beibringen und da Netbeans ja C++ unterstützt, dachte ich mir bleib ich bei der bekannten IDE. Es ist aber ja die reinste Quälerei alle Libs und Includes zusammenzubekommen. Gibt es da irgendeine Lösung (GTK-Plugin o.Ä.) oder muss man das wirklich für jedes Projekt von Hand machen???
Wenn etwas zu einfach klingt um wahr zu sein, dann ist es oft auch nicht wahr!

Benutzeravatar
wegus
Beiträge: 458
Registriert: 26.09.2006, 09:07

Re: GTK Projekte mit gtkmm

Beitrag von wegus » 15.09.2013, 11:06

Also um mal kurz das Problem zu illustriern. Folgende Dateien müssen zum Projekt dazu:

>pkg-config --cflags gtkmm-3.0

includes:
/usr/include/gtkmm-3.0
/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include
/usr/include/atkmm-1.6
/usr/include/giomm-2.4
/usr/lib/x86_64-linux-gnu/giomm-2.4/include
/usr/include/pangomm-1.4
/usr/lib/x86_64-linux-gnu/pangomm-1.4/include
/usr/include/gtk-3.0
/usr/include/cairomm-1.0
/usr/lib/x86_64-linux-gnu/cairomm-1.0/include
/usr/include/gdk-pixbuf-2.0
/usr/include/gtk-3.0/unix-print
/usr/include/gdkmm-3.0
/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include
/usr/include/atk-1.0
/usr/include/glibmm-2.4
/usr/lib/x86_64-linux-gnu/glibmm-2.4/include
/usr/include/glib-2.0
/usr/lib/x86_64-linux-gnu/glib-2.0/include
/usr/include/sigc++-2.0
/usr/lib/x86_64-linux-gnu/sigc++-2.0/include
/usr/include/pango-1.0
/usr/include/cairo
/usr/include/pixman-1
/usr/include/freetype2
/usr/include/libpng12
/usr/include/at-spi2-atk/2.0
/usr/include/gio-unix-2.0/
/usr/include/harfbuzz


>pkg-config --libs gtkmm-3.0
Libs:
gtkmm-3.0
gtkmm-3.0
atkmm-1.6
gdkmm-3.0
giomm-2.4
pangomm-1.4
gtk-3
glibmm-2.4
cairomm-1.0
gdk-3
atk-1.0
gio-2.0
pangocairo-1.0
gdk_pixbuf-2.0
cairo-gobject
pango-1.0
cairo
sigc-2.0
gobject-2.0
glib-2.0


Per Netbeans ist das einzeln eine eIc elende Clickerei. Gibt es keine Option Lib/Include-Pakete selbst zu definieren und hinzu zu laden oder zu exportieren? Das wäre eine Lösung. Weiß dazu jemand etwas?
Ich habe versucht manuell in Makefiles und coniguration.xml die entsprechenden Änderungen einzufügen. Das gelingt mir aber nie vollständig und artet ebenfalls in Bastelei aus. Darum wäre ich für Hilfe dankbar.
Wenn etwas zu einfach klingt um wahr zu sein, dann ist es oft auch nicht wahr!

Benutzeravatar
wegus
Beiträge: 458
Registriert: 26.09.2006, 09:07

Re: GTK Projekte mit gtkmm

Beitrag von wegus » 17.09.2013, 11:53

OK Problem gelöst und falls noch jemand wissen möchte wie es geht, hier die Lösung wie man das Ganze mit zwei Zusatzeinträgen in 2 Minuten fehlerlos löst:

- gtkmm-dev muß installiert sein
- pkg_config muß installiert sein

Wie man an meinem obigen Posting gesehen hat, habe ich versucht dann die Ausgabe von pkg_config manuell zu interpretieren und das ist schlicht nicht nötig mit Netbeans :D


Erstelt ein leeres C++ Application Projekt. Ruft dann die Properties des Projektes auf und fügt an folgenden zwei Stellen Einträge hinzu:


- unter Properties C++ Compiler im Abschnitt Additionial Options im unteren Textfeld folgendes eingeben:

Code: Alles auswählen

`pkg-config gtkmm-3.0 --cflags`
- unter Properties Linker im Abschnitt Additionial Options im unteren Textfeld eingeben:

Code: Alles auswählen

`pkg-config gtkmm-3.0 --libs`

Dabei muß natürlich die Versionsnummer zur gtkmm-Version passen. Bei mir ist es eben gtkmm-3.0. Entscheidend ist auch, dass als Anführungszeichen unbedingt die Backticks ` sind, denn dann weiß die Shell das nicht der Inhalt in den Backticks verwendet werden soll sondern das Resultat der Shell-Ausführung dieser Kommandos.


ersetzt man nun main.cpp durch ein einfaches gtkmm-Programm wie dieses hier:

Code: Alles auswählen


#include <cstdlib>
#include <gtkmm.h>


int main(int argc, char** argv) {
  Glib::RefPtr<Gtk::Application> app =
    Gtk::Application::create(argc, argv,
      "org.gtkmm.examples.base");

  Gtk::Window window;
  window.set_default_size(800, 600);
  window.set_title("Mein GTKMM Window");

  return app->run(window);
}
Danach speichern und der IDE etwas Zeit geben um die neue Liste an Includes und Libs zu durchsuchen und einen clean Rebuild machen. Programm starten und freuen :D
Wenn etwas zu einfach klingt um wahr zu sein, dann ist es oft auch nicht wahr!

Antworten