www.mikrocontroller.net

Forum: Compiler & IDEs makefile - Variable für Name ausm Code


Autor: Markus C. (ljmarkus)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
#define snummer1 SUMMER1

Makefile
SUMMER1 =0x00
SUMMER2 =0x02

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

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

%.o: %.c
  $(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.

Autor: Markus C. (ljmarkus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ Johann L.

Danke schön..

nur leider funktioniert es nicht.

ich habe mal das geänderte Makefile angehängt.

Danke, Markus

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das -D muss direkt vor jedes define.
DEFS = -DMAKRO1=DEFINE1 -DMAKRO2=DEFINE2 ... 

Und verwenden musst du DEFS schon irgendwo. Falls nicht, hat das Setzen 
auch kein Effekt ;-)

Autor: Markus C. (ljmarkus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe ich jetzt gemacht.

bekomme aber folgende meldungen:

MMAC1 undeclared
....
MMAC6 undeclared


Danke, Markus

Autor: Hermann-Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

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

So hat es bei mir funktioniert.

Hermann-Josef

Autor: Hermann-Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry,

hatte eben einen Post überlesen und mit dem alten makefile 
experimentiert.

Hermann-Josef

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

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

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.