Forum: Mikrocontroller und Digitale Elektronik Atmel Studio: Compilieren von Varianten und Post-Build-Macros


von Hartmut Reinke (Gast)


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

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.