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
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.
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.
@ Johann L. Danke schön.. nur leider funktioniert es nicht. ich habe mal das geänderte Makefile angehängt. Danke, Markus
Das -D muss direkt vor jedes define.
1 | DEFS = -DMAKRO1=DEFINE1 -DMAKRO2=DEFINE2 ... |
Und verwenden musst du DEFS schon irgendwo. Falls nicht, hat das Setzen auch kein Effekt ;-)
habe ich jetzt gemacht. bekomme aber folgende meldungen: MMAC1 undeclared .... MMAC6 undeclared Danke, Markus
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
Sorry, hatte eben einen Post überlesen und mit dem alten makefile experimentiert. Hermann-Josef
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) ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.