Atmel Studio: Compilieren von Varianten und Post-Build-Macros

Gast #3305696
Lesenswert?

hallo Experten,

ich plage mich mit folgendem Problem
(Atmel Studio 6.0, 6.1, 5.0, avr_gcc, avr32_gcc):

Ich erzeuge aus einem Quellcode mehrere Varianten.
Dazu setze ich
-- erstens einen Macro #define VARIANTE_SPEZIAL_1 oder so in einer 
zentralen Include.Datei.
--zweitens: Das Feld Artifact Name in den Properties des Projektes auf 
einen passenden Namen, z.b. OutputSpezial_1
Diese beiden Schritte muss ich immer parallel machen.
Einen Weg, das ganze auf einen Macro oder ein #define zu reduzieren habe 
ich nicht gefunden.
OK, nicht optimal, aber damit kann ich leben.

Der Compiler compiliert brav und erzeugt die richtige 
OutputSpezial_1.elf und ggf. auch eine OutputSpezial_1.hex, .lss etc.

So weit, so gut.

Nun möchte ich zusätzlich eine BIN-Datei erzeugen, die ich meinem 
Bootloader zum Fraß vorwerden kann.
Kein Problem, denke ich, dafür gibts das Post-Build-Event.
Und da gibts auch noch die wunderbaren Macros, z.B $(OutputFile).
Leider enthält $(OutputFile) immer den erstmalig vergebenen Artifact 
Name. Wie auch immer ich den ändere, es bleibt dabei.
Wenn ich genauer hinschaue, habe ich jetzt aber zwei Macros 
$(OutputFile).
Einer mit dem ursprünglichen Namen, und einer mit dem gewünschten (wie 
Artifact)
Wenn ich noch genauer hinschaue, kann ich sehen, dass die beiden auch in 
der Projektdatei enthalten sind.
Ich kann sie auch editieren, dann erhalte ich das gewünschte Ergebnis. 
Natürlich nur bis zur nächsten Änderung. Wenn ich den "falschen" Macro 
lösche, ist der Output-Filename leer, ich generiere also ".elf" etc,
obwohl der richtige Macro in der Projektdatei drin steht, aber offenbar 
zu weit hinten.
Ist das ein Bug oder ein Feature? Hat jemand eine Lösung dazu? D.h. eine 
Variable. mit der ich die Output-Dateien sowohl beim Make als auch beim 
Postbuild festlegen kann? Am besten noch mit seinem #define-Macro 
verbunden.

Einen erfolgreichen Tag
Hartmut

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren