g++ am Mac und header-Pfade



  • Hallo,

    ich habe beschlossen mich in Oberflächen mit GTKmm einzuarbeiten.

    Ich arbeite an einem Mac unter Mac OS X Lion und nutze Sublime Text 2 als IDE, welche g++ (i686-apple-darwin11-llvm-g++-4.2) ausführt.

    Ich möchte nun glibmm.h mit #include <glibmm.h> einbinden.

    Mit Fink habe ich http://pdb.finkproject.org/pdb/package.php/gtkmm2.4-gtk-dev installiert, das "include"-Verzeichnis mit den entsprechenden header-Dateien lautet "/sw/include".

    Führe ich nun g++ aus kommt folgende Fehlermeldung:

    gtk.cpp:1:21: error: glibmm.h: No such file or directory
    

    Jetzt muss ich g++ irgendwie beibringen in /sw/include nach glibmm.h zu suchen, denke ich. Aber hier komme ich nicht weiter.

    Vielen Dank schon einmal.

    mynamenixname


  • Mod

    g++ -I/sw/include ...
    


  • Normalerweise verwendet man dafuer pkg-config, siehe auch hier:
    http://developer.gnome.org/gtkmm/stable/



  • Dieser Thread wurde von Moderator/in nman aus dem Forum Linux/Unix in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hat leider nicht funktioniert.
    g++ wird über Cpp.sublime-build (https://gist.github.com/1566100) aufgerufen.

    {
    	"cmd": ["g++ -Wall ${file} -o ${file_base_name} && ./${file_base_name}"], "working_dir": "${file_path}",
    	"selector": "source.c++",
    	"shell": true,
    
    	"windows":
    	{
    		"cmd": ["cl", "/Fo${file_path}", "/O2", "$file"],
    		"selector": "source.c++",
    		"shell": true
    	}
    }
    
    "cmd": ["g++ -I/sw/include -Wall ${file} -o ${file_base_name} && ./${file_base_name}"], "working_dir": "${file_path}",
    

    war erfolglos und

    "cmd": ["g++ -Wall ${file} -o ${file_base_name} && ./${file_base_name}`pkg-config --cflags --libs gtkmm-2.4"], "working_dir": "${file_path}",
    

    leider auch 😞



  • In nmans link steht doch ziemlich genau, wie du den Compiler aufrufen musst. Warum versuchst du das nicht mal umzusetzen? g++ program.cc -o programpkg-config --cflags --libs gtkmm-3.0``

    Und "hat nicht funktioniert" ist unbrauchbar als Fehlerbeschreibung. Was erwartest du? Was ist stattdessen passiert? Du musst schon Fehlermeldungen oä posten.



  • rüdiger schrieb:

    In nmans link steht doch ziemlich genau, wie du den Compiler aufrufen musst. Warum versuchst du das nicht mal umzusetzen? g++ program.cc -o programpkg-config --cflags --libs gtkmm-3.0``

    Und "hat nicht funktioniert" ist unbrauchbar als Fehlerbeschreibung. Was erwartest du? Was ist stattdessen passiert? Du musst schon Fehlermeldungen oä posten.

    Okay, also ich habe mein Programm mal program.cc genannt und

    me:desktop >g++ program.cc -o program `pkg-config --cflags --libs gtkmm-2.4`
    Package gtkmm-2.4 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `gtkmm-2.4.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'gtkmm-2.4' found
    program.cc:1:20: error: gtkmm.h: No such file or directory
    program.cc: In function ‘int main(int, char**)’:
    program.cc:5: error: ‘Gtk’ has not been declared
    program.cc:5: error: expected `;' before ‘main_obj’
    program.cc:6: error: ‘Gtk’ has not been declared
    program.cc:6: error: expected `;' before ‘window_obj’
    program.cc:7: error: ‘main_obj’ was not declared in this scope
    program.cc:7: error: ‘window_obj’ was not declared in this scope
    me:desktop >
    
    me:desktop >g++ program.cc -o program `pkg-config --cflags --libs gtkmm-3.0`
    Package gtkmm-3.0 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `gtkmm-3.0.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'gtkmm-3.0' found
    program.cc:1:20: error: gtkmm.h: No such file or directory
    program.cc: In function ‘int main(int, char**)’:
    program.cc:5: error: ‘Gtk’ has not been declared
    program.cc:5: error: expected `;' before ‘main_obj’
    program.cc:6: error: ‘Gtk’ has not been declared
    program.cc:6: error: expected `;' before ‘window_obj’
    program.cc:7: error: ‘main_obj’ was not declared in this scope
    program.cc:7: error: ‘window_obj’ was not declared in this scope
    me:desktop >
    

    Wo ist denn so eine "environment variable" gespeichert?
    Ist in einer solchen der Pfad, in dem g++ nach den entsprechenden header-Dateien sucht gespeichert? - Kann man diesen Pfad auslesen? - Kann man einen 2. Pfad hinzufügen?



  • mynamenixname schrieb:

    Wo ist denn so eine "environment variable" gespeichert?

    Die wird in deiner .bashrc oae. gesetzt.

    Ist in einer solchen der Pfad, in dem g++ nach den entsprechenden header-Dateien sucht gespeichert? - Kann man diesen Pfad auslesen? - Kann man einen 2. Pfad hinzufügen?

    Du solltest pkg-config verwenden, weil dir das gueltige Pfade ausgibt, ohne dass du manuell herumbasteln musst.

    Hast du pkg-config auch via fink installiert? Weisz gerade nicht auswendig, ob OS X nicht selbst ein pkg-config mitbringt, das dann vielleicht das fink-gtkmm nicht findet.



  • Danke.

    sieht gut aus

    pkg-config
    Must specify package names on the command line
    

    ich setzte mich mal dran 🙂


Log in to reply