makefile - Variable für Name ausm Code

OP #1137752
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.