Hallo, ich hab es schon mal vor einiger Zeit verwendet doch finde den Artikel nicht mehr. Es geht darum, das ich im aktuellen Projekt zwei verschiedene SW-Stände führen will. RELEASED und test zB. Nun habe ich im Code mit #if RELEASE -> #endif den getesteten Code eingeklammert und ausserhalb des #if-Bereichs den neuen Code stehen. Nun würde ich gerne beim make-Aufruf RELEASE mitübergeben oder nicht, je nachddem ob ich getesteten Code ins HEX schreiben will oder nicht. Mir ist bewusst das ich RELEASE you mit #define im Code setzen könnte, will es aber nicht. Die make Option -D funktioniert nicht, zumindest so wie ich sie bis jetzt ausprobiert habe. Aktuell benutze ich Eclipse und AVR Plugin (neu für mich) und ändere den make-Aufruf im Project-Properties-Builder Settings-Build command: Vielleicht ist auch das Schuld?! Schon mal danke für eure Antworten.
Beim GNU make kann man Variablen direkt beim Aufruf setzen:
1 | make RELEASED=1 |
Im Makefile kann man dann entsprechend darauf reagieren, die Zuweisung beim Aufruf überschreibt Zuweisungen im Makefile.
Daniel Ple schrieb: > Die make Option -D funktioniert nicht, zumindest so wie > ich sie bis jetzt ausprobiert habe. Hm. Dann hast du da was falsch probiert. Ein -DRELEASE in den Compileroptionen funktioniert garantiert. Daniel Ple schrieb: > Aktuell benutze ich Eclipse und AVR Plugin (neu für mich) und ändere den > make-Aufruf im Project-Properties-Builder Settings-Build command: > Vielleicht ist auch das Schuld?! Den Aufruf von make solltest du in Ruhe lassen. Alles, was make machen soll, steht im makefile. Das erstellt Eclipse zwar automatisch, du kannst aber in den settings unter C/C++ angeben, was mit drinstehen soll. Fügst du da unter Compiler/other option besagtes -DRELEASE hinzu, klappts auch mit dem makekfile. Oliver
Andreas B. schrieb: > Beim GNU make kann man Variablen direkt beim Aufruf setzen: >
1 | make RELEASED=1 |
> > Im Makefile kann man dann entsprechend darauf reagieren, die Zuweisung > beim Aufruf überschreibt Zuweisungen im Makefile. D.h. im Makefile:
1 | RELEASED=0 |
2 | |
3 | CFLAGS=... -DRELEASED=$(RELEASED) |
Denn -D ist kein make-Schalter sondern ein gcc-Schalter.
Eclipse bietet doch nun schon alles, um solche SW-Stände einfach zu verwalten. In den Projekt-settings einfach für das entsprechede Target dei gewünschten Defines eintragem, fertig. Oliver
Euch allen DANKE! Dein Vorschlag mit dem Eintrag werde ich übernehmen. Toll, mit dem Screenshot - hab ich auch das Menu gleich gefunden.
Daniel Ple schrieb: > Nun würde ich gerne beim make-Aufruf RELEASE mitübergeben oder nicht, je > nachddem ob ich getesteten Code ins HEX schreiben will oder nicht Das wäre für mich das make target, also: make release oder make debug im Makefile jeweils ein entsprechendes Target einrichten, bei dem die passenden #defines beim Compileraufruf gesetzt werden. Nach dem Linken kann man dann auch gleich den Programmer starten. MfG Klaus
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.