Eclipse CDT eigene Ordnerstruktur
-
Hallo,
ich habe mit Eclipse CDT eine eigne Odnerstruktur erstllt (Header, Implementation, Testfile)
Ich habe das ganze als "Source Folder" erstellt (sprich die Pfade sind in den Projekt-Properties eingetragen).
Wenn ich nun in der main.cpp (in Testfile) ein#include "myheader.h"
einfüge (myheader.h liegt im Ordner Header), dann gibt's "No such file or directory".
Wenn ich jetzt alles in den Projekordner packe funktioniert trotzdem nichts. Dann wird's sogar noch wunderlicher und der Fehler "springt" von einer Datei in die nächste (ich hab mehrere includes)
Brauche dringend HILFE! Hab schon gegoogelt aber nix gefunden.
Wäre sehr dankbar für Hilfe.
-
Gibt's etwas was man probieren könnte (Eclipse-Einstellung etc.), bzw. irgendeine Quelle wo man was zum Problem rausbekommt?
-
Wo muss sich die Headerdatei befinden, wenn sie so
#include "myheader.h"
im Quelltext steht?
Hab mich noch nicht mit Eclipse beschäftigt, denke aber das da die C/C++ Regeln nicht anders gehandhabt werden.
So wie du den Header einfügen willst, ich denke es ist ein "selbstgeschriebener" und, wenn der in " " steht sollte der im selben Ordner wie dein Quelltext stehen.
MfG f.-th.
-
thx, für die Antwort!
ja stimmt...
Wobei es mit relativer Pfadangabe auch nicht klappt, oder bin ich zu blöd das richtig hinzuschreiben:
Unter Windows: "..\Header\myheader.h"
Linux: "../Header/myheader.h"
müsste doch stimmen oder?Und nochwas: ich habe eigentlich genau dafür unter: Projekt->Properties->C++ General->Paths and Symbols->Source Location
alle Ordner angegeben und somit sollte Eclipse diese eigentlich auch durchsuchen.
-
Zeig genauer die Projektstruktur und dein Code. Für ein Projekt ist es nicht notwenig irgendetwas in den Einstellungen zu ändern.
+ HelloWorld + src + header - Printer.hpp + source - Printer.cpp - HelloWorld.cpp
// HelloWorld.cpp: #include <iostream> #include "header/Printer.hpp" using namespace std; int main() { Printer p; p.Run(); return 0; }
// Printer.hpp: #ifndef PRINTER_HPP_ #define PRINTER_HPP_ class Printer { public: Printer(); virtual ~Printer(); void Run(); }; #endif
// Printer.cpp: #include "../header/Printer.hpp" #include <iostream> Printer::Printer() { } Printer::~Printer() { } void Printer::Run() { std::cout << "Printer prints!" << std::endl; }
-
</Exit> schrieb:
thx, für die Antwort!
ja stimmt...
Wobei es mit relativer Pfadangabe auch nicht klappt, oder bin ich zu blöd das richtig hinzuschreiben:
Unter Windows: "..\Header\myheader.h"
Linux: "../Header/myheader.h"
müsste doch stimmen oder?Nein man halt sich am C++ Standard! Pfadangabe ala "../Header/myheader.h"
</Exit> schrieb:
Und nochwas: ich habe eigentlich genau dafür unter: Projekt->Properties->C++ General->Paths and Symbols->Source Location
alle Ordner angegeben und somit sollte Eclipse diese eigentlich auch durchsuchen.Eigentlich unnötig!
-
Hallo Zeus,
danke für deine Hilfe
Ich hab jetzt alles so umgesetzt wie in deinem Beispiel und es scheint zu funktionieren.
(hab's noch nicht vollständig getestet, aber der Compiler beschwert sich schon mal nicht mehr)Ich verstehe nur nicht, warum das Eclipse nicht macht, wenn ich ihm die Pfade gebe. Aber naja, solange es "direkt" funktioniert!
Danke nochmal!