Ich habe Eclipse Juno für C / C ++ - Entwickler zusammen mit dem GNU ARM C / C ++ Entwicklungs-Support-Plugin von Ссылка installiert.
In meinem Projekt verwende ich Typen wie uint_32t
, int16_t
und uint8_t
, die normalerweise von stdint.h
kommen. Während ich die Eclipse gezwungen habe, die Standard-Header meines Compilers zu sehen, indem ich direkt auf das Verzeichnis, in dem sich das include
-Verzeichnis befindet, zeigt, werden die genannten Typen nicht aufgelöst. Dies gibt mir viele rote Markierungen über nicht aufgelöste Symbole und einige Probleme mit Code-Vervollständigung der Funktionen, die mit diesen Typen deklariert sind.
Das gleiche Problem ist mit Standard-Makrodefinitionen wie GNUC - normalerweise CDT sehen Sie diese für GNU C oder GNU C ++, aber mit Toolchain auf ARM Windows GCC gesetzt nicht tun. Seltsam.
Was kann ich tun, um das zu beheben und den Haupt-Boost zurückzugeben, den Eclipse an Produktivität liefert?
Ich glaube, ich habe eine Lösung für mein Problem gefunden. Das Problem war der Anbieter CDT GCC Builtin Compiler Settings , der versuchte, gcc
anstelle von arm-elf-gcc
auszuführen. Ich habe dem Feld Command to get compiler specs:
¹ ein Präfix hinzugefügt, um den Compiler mit seinem richtigen Namen aufzurufen.
Und voilà, alle ungelösten Symbole sind verschwunden.
Leider habe ich mein Projekt durch das Ändern von Toolchains (mache das nie, wenn du GNU ARM Eclipse installiert hast!), aber das ist eine andere Geschichte.
¹ - Es befindet sich unter: Project Properties > C/C++ General > Preprocessor Include Paths, Macros etc.
, die Registerkarte Providers
; Share settings entries between projects (global provider)
muss deaktiviert sein, um dieses Feld zu bearbeiten.
Bitte beachten Sie, dass GNU ARM Eclipse Plugins im Oktober 2013 aktualisiert wurden und die neue Version die Pfadsuche besser unterstützt, daher ist es weniger wahrscheinlich, dass dieses Problem auftritt.
das Ändern von Toolchains wurde ebenfalls behoben.
Wenn Sie externes Makefile verwenden, kann Eclipse nicht feststellen, wo sich Ihre Standardbibliothek für die Zielplattform befindet. Die Lösung, die ich gefunden habe, ist das Hinzufügen der Bibliothek Include-Pfade zu
Project->Preferences->C++ General->Paths and symbols
.
Ich hatte das gleiche Problem und die Lösung von dieser Seite half es zu lösen:
(gcc)|([gc]++)|(clang)
in (arm-none-eabi-gcc)|([gc]++)|(clang)
${COMMAND}
durch arm-none-eabi-gcc
. In Project > Properties > C/C++ General > Preprocessor Include Paths > Providers
:
Aktivieren Sie CDT GCC Built-in Compiler Settings Cross ARM
.
Setzen Sie Command to get compiler specs
auf:
.C
am Ende. Dies wird normalerweise abhängig von der Sprache eingestellt. Ein kleines .c
wird für C-Code verwendet, während das große C für C ++ verwendet wird. Es werden jedoch keine Sprachen angegeben, wenn ein externes Makefile oder die Option no toolchain
verwendet wird. Überprüfen Sie auch Allocate console in the Console View
, um zu überprüfen, ob der Befehl korrekt ausgeführt wird und die Variablen korrekt ersetzt werden.
Aktivieren Sie CDT GCC Build Output Parser
und ändern Sie das Compiler-Befehlsmuster von (gcc)|([gc]\+\+)|(clang)
in (.*g++)|(.*gcc)|(.*[gc]\+\+)
und übernehmen Sie dann die Änderungen. Verwenden Sie die Schaltflächen Move up/down
, um sie über die CDT GCC Built-in Compiler Settings Cross ARM
zu verschieben.
Sie müssen auch Project > Properties > C/C++ General > Preprocessor Include Paths > Entries > CDT User Settings Entries
auf Folgendes setzen:
In Preferences > String Substitutions
müssen Sie eine Variable für gnu-arm-path
erstellen, die auf Ihre Toolchain-Startseite zeigt.
Idealerweise sollten diese in CDT GCC Built-in Compiler Settings Cross ARM
gefunden werden, aber in meinem Fall nicht. Ich denke, es hat damit zu tun, dass in einem verwalteten Projekt diese Einträge an jede Sprache gebunden sind. Aber mit einem externen Makefile sagt das Sprachenlistenfeld nur [Unspecified]
.
Das Eclipse-Scanner-Provider-System scheint auf CDT-gemanagte Projekte ausgelegt zu sein, was es ein wenig komplizierter macht, wenn Sie ein externes Makefile verwenden.
Sie können ein neues verwaltetes Projekt mit einem externen Makefile erstellen und die Scanner-Erkennungskonsole anzeigen, um zu sehen, wie es funktionieren soll. Das habe ich gemacht.
Ich stieß auf eine völlig andere Lösung meiner Version dieses (in) berühmten Problems. In meinem Fall waren Suchpfade nicht das Problem, weil der Compiler gut funktionierte. Trotzdem klagte der Redakteur über unaufgelöste CSTDINT-Typen überall: sehr nervig. Googlen für die Lösung mit der Fehlermeldung Zeichenfolge war nicht fruchtbar und sehr frustrierend.
Ich fand die Lösung dieses Problems zufällig in einer Antwort ("Es gibt jetzt einen neuen Weg, dies ohne den GXX_EXPERIMENTAL-Hack zu lösen") zu folgendem Thread:
Eclipse CDT C ++ 11 / C ++ 0x Unterstützung
Prost
Tags und Links eclipse-cdt gcc