make/gcc include path setzen



  • Hallo,

    ich schreibe an einem C++ Programm mit einer Schnittstelle zu Matlab. Ich benutze Ubuntu 11.10 32bit mit dem normalen gcc Compiler. Das Programm liegt in einem bestimmten Verzeichnis und ich muss wohl eine Datei / einen Ordner includen der außerhalb dieses Ordners liegt. Aus dem Beispielprogramm habe ich #include "engine.h" geändert in #include "/usr/local/MATLAB/R2012a/extern/include/engine.h"

    Gestartet wird die Kompilierung über ein makefile. Nach der Änderung erhalte ich keinen Fehler mehr, dass er die engine.h nicht finden kann. Stattdessen erhalte ich eine Fehlermeldung für eine andere Datei die ebenfalls im obigen Ordner liegt (engine.h verweist mit include auf matrix.h und die verweist auf xxxx.h, die dann nicht mehr gefunden wird). Ich nehme mal an ich muss in irgendeine Umgebungsvariable den Matlab-Ordner schreiben und dann sollte das ganze funktionieren, oder wie funktioniert das?

    MfG, mike.



  • Keine Ahnung, wie dein Makefile aussieht, aber Include-Verzeichnisse übergibst du dem gcc via -I.

    Es gibt auch noch CPLUS_INCLUDE_PATH , aber ich würde sowas eher vom Buildsystem erledigen lassen.



  • Include-Pfade werden beim gcc (sowie g++) mittels "-I" gesetzt, s. z.B. http://www.network-theory.co.uk/docs/gccintro/gccintro_22.html



  • Das mit dem gcc hatte ich gelesen, aber den rufe ich ja gar nicht explizit auf.

    Das makefile sieht einfach so aus:

    include $(shell rospack find mk)/cmake.mk
    

    Kann ich da etwas dazu schreiben oder muss ich "tiefer" gehen und beispielsweise die cmake.mk bearbeiten?



  • Also ich muss wohl die CMakeLists editieren..

    mit:

    include_directories(/usr/local/MATLAB/R2012a/extern/include)
    

    findet er zumindestens die engine.h Datei. Jetzt muss ich nur noch rausfinden in welcher lib Datei die Implementierung davon ist und wie ich die mit CMakeLists einbinde.. kann mir jemand was zur Einbindung sagen? Die Lib-Datei erfrage ich mal in nem Matlab-Forum.

    Habe es mit target_link_libraries(listener libeng.so) und link_directories() versucht aber erhalte weiterhin die Fehlermeldung, dass die einzelnen Funktionen nicht gefunden werden.

    edit: In der Matlab doku habe ich gefunden: 32-bit Linux LD_LIBRARY_PATH matlabroot/bin/glnx86: matlabroot/sys/os/glnx86


Anmelden zum Antworten