Variable Dateinamen beim Compilieren.

Gast #1629473
Lesenswert?

HAllo zusammen

Ich habe ein Projekt, aus dem ich durch setzen von defines verschiedene 
Varianten compilieren kann. Je nachdem welche Variante ich compilieren 
will, kommentiere ich das jeweils andere deine aus. Das ganze sieht im 
Prinzip so aus:
1
#define VARIANTE_A             // Immer nur ein define gesetzt.
2
// #define VARIANTE_B
3

4
#ifdef VARIANTE_A
5
bla;
6
bla;
7
#endif
8

9
#ifdef VARIANTE_B
10
blub;
11
blub;
12
#endif

Kann ich irgendwie den Namen der Ausgabedatei (das Hex file) abhängig 
vom der eingestellten Variante machen? Ideal wäre wenn das Hexfile in 
einem Fall "VARIANTE_A.hex" und im anderen Fall "VARIANTE_B.hex" 
heisssen würde.
Ich nutze AVR Studio 4.13 und GCC.

Geht so was?
#1629488
Lesenswert?

Es würde gehen, wenn du das "#define VARIANTE_A" aus dem Sourcecode raus 
nimmst und das Definieren statt dessen im Makefile machen würdest. Dann 
kannst du dort auch nach Belieben andere Sachen davon abhängig machen 
(wie eben Dateinamen). Das geht aber nicht mit dem vom Studio 
generierten Makefile, du müsstest dann schon eine eigenes nehmen.
#1629492
Lesenswert?

Nicht das ich wüsste.

Aber warum machst du nicht folgendes:

Du setzt 2 Projekte auf.
Anstelle des fehlerträchtigen Auskommentierens, erzeugst du den jeweils 
richtigen #define mit den Compiler Settings (oder einem 
projektspezifischen Header File, welches nur diesen #define enthält + 
möglicherweise andere Dinge, die Variantenabhängig sind)

Beide Projekte teilen sich den Code insofern, als die Source-Files in 
einem gemeinsamen Verzeichnis stehen, von wo sich jedes Projekt bedient.


Viola. Benötigst du eine frische Version einer Variante, machst du 
einfach das zugehörige Projekt auf und compilierst. Du brauchst nicht 
fehlerträchtig irgendein #define auskommentieren und auch nicht darauf 
achten, dass immer alle Einzelteile für die jeweilige Version richtig 
umkompiliert wurden.

Und natürlich steht dir dann das Hex-File im jeweiligen Projekt bis zum 
nächsten Build zur Verfügung.

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