Anordnung von Headern und Programmdatein
-
Also ich habe ein Problem:
Ich habe meine cpp und hpp Dateien in Unterverzeichnis gepackt.
main.cpp braucht a/a.hpp, b/b.hpp a/a.hpp b/b.hpp braucht a/a.hpp b/b.cppWie soll ich jetzt a/a.hpp in b/b.hpp includen?
Wenn ich main.cpp compiliere muss der Pfad a/a.hpp sein. In b/b.cpp muss der Pfad ../a/a.hpp sein.
Wie soll ich das Problem jetzt lösen?
Alle Dateien in ein Verzeichnis zu tuen geht nicht, da es dann zu Namenskonflikten kommt.Es wäre schön, wenn das ganze sowohl mit VS8 als auch mit gcc(g++) und Makefiles geht.
Danke im Voraus.
-
ja und wo ist jetzt das problem?
schreib doch einfach in die main include "a/a.hpp" und in die b.hpp include "../a/a.hpp"
passt doch dann, oder was ist der fehler?
-
sorry; War ein blödes Beispiel:
nehmen wir an main.cpp bräuchte nur b/b.hpp.
Dann müsste ich zusätzlich in jeder Datei vor dem include von b/b.hpp den Pfad von a/a.hpp schreiben. Das finde ich nicht sonderlich schön und intuitiv.
Ich wollte frage ob es auch eine elegantere Lösung gibt, oder irgendeinen Trick.Und in b/b.hpp ../a/a.hpp zu includem halte ich für eine eher schlechte Idee da wenn diese Datei von main.cpp aus included wäre der Pfad falsch wär und es einen Error geben würde(?).
-
Hobby Programmierer schrieb:
Ich wollte frage ob es auch eine elegantere Lösung gibt, oder irgendeinen Trick
beim g++ und auch anderen Compilern könntest du mit -I in der Kommandozeile ein include-Verzeichnis angeben:
g++ -o myexe main.cpp -Ia/ -Ib/so oder so ähnlich...
-
Danke!
Oh das hatte ich ganz vergessen.
So wäre es sicherlich eine alternative alle .hpp Dateien in ein Include-Verzeichnes zu packen.Wenn mir jetzt noch wer sagt wie man das mit Visual Studio 08 bzw den zugehörigen Compiler machen kann, mache ich das so.
-
Hobby Programmierer schrieb:
Wenn mir jetzt noch wer sagt wie man das mit Visual Studio 08 bzw den zugehörigen Compiler machen kann, mache ich das so.
Du stellst Forderungen...schau doch einfach in der MSDN nach.
Aber wenn du sowieso eine IDE benutzt, kannst du das ganze doch auch "umgekehrt" machen: Es kommen alle Source- und Header-Dateien in einen Ordner und ordnest sie im Workspace deiner IDE in virtuellen Ordnern an. Naja, schau einfach in der MSDN nach den Kommandozeilenargumenten für den Compiler nach. Vielleicht kannst du aber auch bereits in den Projekteinstellungen zusätzliche Include-Pfade angeben - Eigeninitiative und so...
-
Also ich habe 99% meiner Includes in anderen Verzeichnissen... Ich hab auch kein Problem damit... Schon mal einfach
#include "a/a.hpp"in derb.hppversucht? Es sollte nicht (nur?) von der Datei und deren Pfad ausgehen sondern auch von anderen Include-Pfaden...VS: du markierst
includeund drückst F1... Dann liest du mal, was dort über <> und speziell "" steht... Dann solltest du mitbekommen, dass#include "a/a.hpp"auch in nem verzeichnis geht, wo kein verzeichnis a ist...bb