makefile - Variable für Name ausm Code

OP #1137752
Lesenswert?

Hallo..

ist es möglich im makefile beim Namen des .hex Files eine Varaible 
einzusetzen die im Code hinterlegt ist ?

zb. in der config.h habe ich stehen:

#define snummer1 0x00
#define snummer2 0x20
#define snummer3 0x30
#define snummer4 0x40
#define snummer5 0x50
#define snummer6 0x60

im makefile:

FORMAT = ihex
TARGET = programm.hex

das soll jetzt aber so lauten:

00-20-30-40-50-60.hex

Danke, Markus
#1137881
Lesenswert?

in der Theorie geht das, aber nur mit hohem Aufwand (mit perl/sed/awk 
das .h-File durchstöbern, im Makefile dann danach das File umbenennen). 
Das Dependency-Tracking des make geht dabei vermutlich flöten.

Einfacher: definier deine snummer-teile NUR im Makefile, gib sie dem gcc 
über -Dsnummer=xx weiter, und schon sind die variablen auch im  Makefile 
verfügbar.
Weiterer Vorteil: du kannst deine Seriennummer dann auch gleich 
automatisch beim kompilieren generieren lassen.
Persönliche Seite #1137882
Lesenswert?

Markus C. wrote:
> Hallo..
>
> ist es möglich im makefile beim Namen des .hex Files eine Varaible
> einzusetzen die im Code hinterlegt ist ?
>
> zb. in der config.h habe ich stehen:
>
> #define snummer1 0x00
> #define snummer2 0x20
> #define snummer3 0x30
> #define snummer4 0x40
> #define snummer5 0x50
> #define snummer6 0x60
>
> im makefile:
>
> FORMAT = ihex
> TARGET = programm.hex
>
> das soll jetzt aber so lauten:
>
> 00-20-30-40-50-60.hex
>
> Danke, Markus

Du kannst es umgekehrt machen, also Variablen im Makefile definieren:
1
#define snummer1 SUMMER1

Makefile
1
SUMMER1 =0x00
2
SUMMER2 =0x02
3

4
TARGET= $(SUMMER1)-$(SUMMER2)-...
5

6
DEFS = -DSUMMER1=$(SUMMER1) ...
7

8
%.o: %.c
9
  $(CC) $(DEFS) ... $< -o $@

Oder du kannst die Werte aus der C-Datei rauslesen. Dazu die Datei 
scannen mit sed, awk et al. oder nem selbstgeklöppelten Tool.
Gast #1141225
Lesenswert?

Hallo,

meiner Meinung nach fehlen die '-D', also so:
1
TARGET = Hexfiles/$(MMAC1)-$(MMAC2)-$(MMAC3)-$(MMAC4)-$(MMAC5)-$(MMAC6)
2

3
DEFS = -DMMAC1=$(MMAC1) -DMMAC2=$(MMAC2) -DMMAC3=$(MMAC3) -DMMAC4=$(MMAC4) -DMMAC5=$(MMAC5) -DMMAC6=$(MMAC6)

So hat es bei mir funktioniert.

Hermann-Josef
Persönliche Seite #1141230
Lesenswert?

Hermann-Josef wrote:
> Hallo,
>
> meiner Meinung nach fehlen die '-D', also so:
>
>
1
> TARGET = Hexfiles/$(MMAC1)-$(MMAC2)-$(MMAC3)-$(MMAC4)-$(MMAC5)-$(MMAC6)
2
> 
3
> DEFS = -DMMAC1=$(MMAC1) -DMMAC2=$(MMAC2) -DMMAC3=$(MMAC3)
4
> -DMMAC4=$(MMAC4) -DMMAC5=$(MMAC5) -DMMAC6=$(MMAC6)
5
>
>
> So hat es bei mir funktioniert.

Aber nur, weil du DEFS auch verwendest, zB als Teil von CFLAGS (im 
Gegensatz zu Markus)  ;-)

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