Forum: Compiler & IDEs make und Parameter mitgeben


von Daniel P. (callmed)


Lesenswert?

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.

von Andreas B. (Gast)


Lesenswert?

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.

von Oliver (Gast)


Lesenswert?

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

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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.

von Oliver (Gast)


Angehängte Dateien:

Lesenswert?

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

von Daniel P. (callmed)


Lesenswert?

Euch allen DANKE!

Dein Vorschlag mit dem Eintrag werde ich übernehmen.
Toll, mit dem Screenshot - hab ich auch das Menu gleich gefunden.

von Klaus (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.