Hallo! Ich habe jetzt schon länger nichts mehr mit den AVRs gemacht und schon geht es nicht mehr so wie früher :( Was ich benutze: CMake 3.4.0 mit Generator: Eclipse CDT4 - MinGW Makefiles Eclipse Photon, Kepler (File->Import->Existing Projects into Workspace) Atmel AVR Toolchain 3.5.4.1709 Project->Build funktioniert wunderbar. Leider bekommt der Indexer von Eclipse nicht mit, dass im Compiler intern _AVR_ATmega88_ gesetzt wird. Es sind einige #defines vorhanden, die werden aber scheinbar von cmake in der .cproject gesetzt (cmake lässt wohl beim Erkunden der Toolchain schon einen Parser los, der weiß dann aber natürlich nichts vom letztendlich benutzen -mmcu). Was muss ich in Eclipse setzen, dass es mit dem im Makefile angegebenen gcc und dessen "definitions" einen "macro parse" startet? Schon einmal vielen Dank fürs Lesen :)
Rechtsklick aufs Projekt, Properties Im sich öffnenden Fenster bei dem c/c++ gedöns nach Paths/Symbols Ausschau halten. Da dann bei Symbols AVR_Atmega88 für GNUC oder gleich alle Sprachen anlegen. Bei includes kannst du Eclipse übrigens einen Pfad zu den beim Compiler liegenden Headerfiles zu den 'builtin' libs geben. Übernehmen, Indexer rennt 1x, fertig.
Ja, das kann man machen, ich meine aber, dass das früher automatisch ging. Der Autodiscovery fehlt nun scheinbar irgendwie das mcu flag? In der .cproject wurde von CMake folgendes eingetragen: <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"> <buildOutputProvider> <openAction enabled="true" filePath=""/> <parser enabled="true"/> </buildOutputProvider> <scannerInfoProvider id="specsFile"> <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="D:/avr8-gnu-toolchain/bin/avr-gcc.exe" useDefault="true"/> <parser enabled="true"/> </scannerInfoProvider> Ich werde da mal den mcu switch eintragen, mal sehen was passiert.
Ich habe da gleich mehrere Sachen gefunden. Es fängt eigentlich bei CMake an, da ruft der Generator für Eclipse Makefiles die built-in macros direkt nach der Wahl des Generators ab und übernimmt nur die Flags stdlib und std (siehe CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake). Ich sehe hier nur die Möglichkeit über die Variable CMAKE_CXX_COMPILER_ARG1 die mcu Option zu setzen. Das geht aber leider auch nur im Toolchain-File, weil der Schritt scheinbar nur bei der Wahl der Toolchain und nicht mehr beim generieren der Makefiles ausgeführt wird. Ich habe die Datei mal angehängt. In Eclipse habe ich mal testweise ein Cross GCC C-Projekt gestartet und alles so eingestellt, dass erfolgreich kompiliert werden kann (also auch die mcu Flag gesetzt). Schaltet man nun beim Provider "CDT Cross GCC Built-In Compiler Settings" die Option "Allocate console in the Console View" ein so sieht man, dass, trotz C-Projekt, avr-g++ zur Ermittlung genutzt wird :( Die Flags werden auch nicht übernommen, man muss also die mcu Option nochmal extra im Provider angeben :( Es scheint also so als hätte der Provider seine eigenen ${COMMAND} und ${FLAGS} Variablen. Obwohl ja bei COMMAND das Prefix "avr-" übernommen wurde... Für Eclipse müsste CMake wohl in der Datei .cproject irgendwie die Variablen COMMAND und FLAGS für den Provider "CDT Cross GCC Built-In Compiler Settings" setzen und den Provider dann auch aktivieren. Dazu müsste CMake aber auch die mcu Option als "unverzichtbar" ansehen und diese übergeben. Ich denke mal das Toolchain-File pro mcu ist am einfachsten, die built-in macros werden dann über den Provider "Contributed PathEntry Containers" (.cproject Datei) an den Indexer übergeben.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.