Forum: Compiler & IDEs Source Fehler in Eclipse


von Michael W. (Gast)


Lesenswert?

Hallo !

ich verwende seit geraumer Zeit Eclipse-Luna+GCC und kann meine Projekte 
auf Basis eines Makefiles absolut fehlerfrei übersetzen. Da die 
Sourcedateien in zahlreichen verschiedenen Verzeichnissen liegen (es ist 
ein großes Projekt) muss ich mein eigenes Makefile benutzen (angeblich 
kann man das ja automatisch irgendwie machen).

Das Make funktioniert in der Konsole und auch unter Eclipse.

Was mich ziemlich nervt:

Eclipse zeigt in fast allen Sourcen die sich nicht im root-Verzeichnis 
befinden rote "Fehler" an, die entstehen, weil es die h-Files nicht 
findet.
Auch nach dem erfolgreichen Übersetzen gehen diese Fehlermarkierungen 
nicht weg.

Die Frage:

Woher weiß Eclipse überhaupt, wo es für diese "Onlineanalyse" nach 
Headern suchen soll? Scheinbar schaut es dabei nicht in das Makefile, 
sonst würde es ja funktionieren. Aber wo dann? Es kann ja nicht davon 
ausgehen, dass alle h-Files im root liegen. Meine Include Pfade zeigen 
im Makefile u.A auf third party Produkte, die nicht mal im Projektordner 
liegen. Für das Makefile kein Problem, aber diese roten Markierungen 
...?

Es gibt da so einen Indexer, dessen Funktionalität sich mir noch nicht 
so ganz erschlossen hat - hat es damit zu tun? Wo stelle ich das ein, 
oder wo kann ich das abdrehen, wenn es schon nicht funktioniert?

Ich hoffe, hier eine Antwort zu bekommen, da ich am Ende meiner Weisheit 
angelangt bin...

von Mike R. (thesealion)


Lesenswert?

Mach im Project-Explorer mal einen recht-Klick auf dein Project und dann 
auf "Properties".

Da kann ich bei mir unter C/C++ Build einstellen, welche Verzeichnisse 
beim compilieren (und mehr ist die Fehlermarkierung beim bearbeiten ja 
auch nicht) mit eingebunden werden.

Bei mir unter Properties->C/C++ Build->Tool Settings->IAR C/C++ Compiler 
for ARM->Preprocessor
(Dürfte bei dir geringfügig anders heißen)

Gruß Mike

von Stefan (Gast)


Lesenswert?

Eclipse bzw. Das CDT Plugin durchsucht nur die Ordner, die du im Projekt 
eingestellt hast.
Geh in die Properties des Projektes und trag dort die Includepfade ein.
Das CDT Plugin parst nicht das Makefile

von Michael W. (Gast)


Lesenswert?

Danke - werde mal schauen...

von timertick_t (Gast)


Lesenswert?

Stefan (Gast) schrieb:
>Eclipse bzw. Das CDT Plugin durchsucht nur die Ordner, die du im Projekt
>eingestellt hast.

Genau. Dadurch kann man prima Cube einbinden ohne daß es zu Chaos kommt.

Mit dem Indexer hatte ich Probleme mit einem C++ Projekt die ich nicht 
zuordnen konnte (Invalid arguments 'Candidates are: void sleep()). Mit 
ein bisschen experimentellem rumklicken ging's weg.

Und damit man nicht immer wieder bei jedem neuen Projekt die gleichen 
Pfade für gewisse .h Files angeben muß, kann man sie in 'Path and 
Symbols' -> 'Export settings...' in ein XML File schreiben und danach 
wieder importieren.

Noch nen Tip für nen ähnlichen Fall: Ausgeblendete C-Files.
Wenn du HAL nutzt und zugehörige .c Dateien mit einem durchgestrichenen 
Icon hast, dann gehören sie nicht zum Projekt obwohl sie im 
Projektordner liegen. Wenn du sie einbinden möchtest, dann:
Properties -> C/C++ General -> Path and Symbols -> Reiter 'Source 
location' -> Pfad in "Source folders on build path" anklicken -> Edit 
filter... -> mit Remove die Datei aus dem Filter entfernen. Nun findet 
man sie aktiv im Verzeichnisbaum.

von Sven B. (scummos)


Lesenswert?

Makefiles lesen ist für eine Entwicklungsumgebung quasi unmöglich, die 
sind viel zu generisch. Die Pfade muss man schon per Hand einstellen.

von Bernd K. (prof7bit)


Lesenswert?

Eclipse kann die Ausgabe beim build parsen und damit alle Include-Pfade 
und defines automatisch ermitteln und sich somit selbst konfigurieren. 
Man muss da also nix von Hand einstellen. Nur den build-output-parser 
zur Mitarbeit überreden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.