rubricanis
Homo ludens
Ich habe schon einige Jahre nichts mehr mit C/C++ gemacht und möchte jetzt ein angefangenes, altes Projekt fertigstellen, - mit clang und make. Allerdings stoße ich da bei beiden auf Widerstand was das file layout angeht, ich bekomme die entsprechenden Pfade nicht realisiert.
Mein file layout sieht in etwa so aus:
Xyz und lua sollen zu statischen und dynamische Biblotheken compiliert werden. Die Pfade zum Quellcode(.cpp) kann ich in make mit ".PATH" bekannt machen, leider funktioniert das nicht mit ".hpp", nur mit ".h", und da meckert clang. Na ja, nicht tragisch, da muss ich eben im Makefile die Pfade bei den Abhängigkeiten direkt angeben.
Was ich nicht hinbekomme ist clang++ die Pfade zu den .hpp Dateien mitzuteilen. Wenn ich man clang richtig verstehe ist das mit -I bzw. -F möglich, aber das bekomme ich aus irgenwelchen Gründen nicht hin. Wie werden da die Pfade angegeben? Ich hatt -Iinc/xyz bzw. -Finc/ versucht aber das funtioniert nicht, auch nicht mit ./ davor.
Ein weiteres Problem ist das make alle .o Dateien auf den Toplevel schmeißt. Angeblich geht das mit .OBJDIR aber damit komme ich überhaupt nicht klar. Am liebsten wäre es mir wenn ich die in .build/xyz etc bekäme.
Und noch etwas: Im alten Projekt (ich glaube das hatte ich entweder mit Eclipse oder premake + Mingw gemacht) hatte ich im Sourcecode die zu includierenden Dateine folgendermaßen angegeben, z.B. in Shell.cpp
Natürlich ist das mit relativen Pfaden "../../inc/xyz/Xyz.hpp" möglich, aber das ist ja wohl nicht das Gelbe vom Ei.
Meine Güte, was für ein HeioPei! Kann mir jemand über diese Klippe hinweghelfen. Mit .o Dateien im jeweiligen Sourcecode Ordner kann ich leben, aber das andere ist eher "must have".
Mein file layout sieht in etwa so aus:
Code:
Makefile
src/
app/
main.cpp
Shell.cpp
.....
xyz/...
lua/...
inc/
app/
Shell.hpp
....
xyz/
Xyz.hpp
...
lua/...
lib/ ...
./build
Was ich nicht hinbekomme ist clang++ die Pfade zu den .hpp Dateien mitzuteilen. Wenn ich man clang richtig verstehe ist das mit -I bzw. -F möglich, aber das bekomme ich aus irgenwelchen Gründen nicht hin. Wie werden da die Pfade angegeben? Ich hatt -Iinc/xyz bzw. -Finc/ versucht aber das funtioniert nicht, auch nicht mit ./ davor.
Ein weiteres Problem ist das make alle .o Dateien auf den Toplevel schmeißt. Angeblich geht das mit .OBJDIR aber damit komme ich überhaupt nicht klar. Am liebsten wäre es mir wenn ich die in .build/xyz etc bekäme.
Und noch etwas: Im alten Projekt (ich glaube das hatte ich entweder mit Eclipse oder premake + Mingw gemacht) hatte ich im Sourcecode die zu includierenden Dateine folgendermaßen angegeben, z.B. in Shell.cpp
Code:
#include <xyz/Xyz.hpp>
Meine Güte, was für ein HeioPei! Kann mir jemand über diese Klippe hinweghelfen. Mit .o Dateien im jeweiligen Sourcecode Ordner kann ich leben, aber das andere ist eher "must have".

