Forum: Compiler & IDEs Frage zu make


von A. Füßer (Gast)


Lesenswert?

Hi *!

Leider kenn ich mich mit make (AVRGCC) nicht aus. Gibts ne Möglichkeit 
grundsätzlich alle unter "src" aufgeführten Dateien (im makefile) neu 
übersetzen zu lassen?

Danke,
 André Füßer
--
http://www.canathome.de - Hausautomation mit AVR + CAN

von Lanius (Gast)


Lesenswert?

ja, gibt es.

du must nur die Regeln ändern...

make hat aber ne besch... syntax, wenn du keine Make-Hilfe hast, besorg 
dir am besten eine für GCC.
Bei mir war eine Windows-Hilfe mit im bin-Ordner.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich nehme an du verwendest das (schon fast zum Standard gewordene) 
gcctest-makefile? Wenn du die Dependencies am Ende der Datei weglässt 
wird immer alles neu übersetzt.

MfG
Andreas

von A. Füßer (Gast)


Lesenswert?

Hallo Andreas,

ich verwende das gcc-makefile, am Ende steht:
----------
#compiler flags
  CPFLAGS  = -g -O2 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)

#linker flags
  LDFLAGS = -Wl,-Map=$(TRG).map,--cref

########### you should not need to change the following line 
#############
include $(AVR)/include/make2

###### dependecies, add any dependencies you need here 
###################

$(TRG).o : $(TRG).c
----------
wenn ich jetzt die letzte Zeile auskommentiere, dann ändert sich 
nichts. Was mache ich falsch?

@Lanius: Danke für den Tip, aber in der Hilfe seh ich vor lauter Bäumen 
den Wald nimmer...

Hintergrund: Ich benutze für mehrere Projekte die gleichen Includefiles, 
ab und zu ändern die sich. Wenn ich dann ein anderes Projekt kompilieren 
will, das noch mit einem alten inc. gebunden wurde, eine neuere Version 
des inc.files aber schon fertig compiliert vorliegt, dann wird das nix, 
d.h. die alte Chose wird/bleibt dazugebunden. Deshalb will ich immer 
alle neuübersetzen, richtig so?

Danke,
 André.

--
http://www.canathome.de - Hausautomation mit AVR + CAN

von Lanius (Gast)


Lesenswert?

>@Lanius: Danke für den Tip, aber in der Hilfe seh ich vor lauter Bäumen den Wald 
nimmer...

mehr sehe ich da leider auch nicht, hab auch im Netz keine bessere Hilfe 
gefunden :(
make mag ja praktisch sein, aber bis man da durchsteigt kann man 10 
batch-dateien schreiben.

Mein Makfile für 8051 und SDCC läuft jetzt zwar, aber über eine bessere 
Beschreibung der Syntax würde ich mich echt freuen

von Michael Schänzler (Gast)


Lesenswert?

> Gibts ne Möglichkeit grundsätzlich alle unter "src" aufgeführten Dateien (im 
makefile) neu übersetzen zu lassen?

Einfache, aber nicht wirklich elegante Lösung: make clean, make.

Wenn die Projekte alle miteinander zusammenhängen, ist es besser ein 
globales Makefile zu benutzen, das die entsprechenden dependencies 
enthält. Ist es für Can@home?

Die Syntax von Make ist aber wirklich ziemlich obskur, meine absolute 
Lieblingsfehlermeldung ist:

*** missing separator (did you mean TAB instead of 8 spaces?)

Michael
-------
http://www.avr-lcd.de

von Jonas Diemer (Gast)


Lesenswert?

Hi!

Also für GNU make (das auch beim avr-gcc verwendet wird), gibt es ne 
anleitung:

http://cip.physik.uni-wuerzburg.de/virtualmanuals/root-doku/make/make_toc.html

die is recht komplett, und es gibt auch ne gute intro (Wenn man wenig 
zeit hat) :

http://cip.physik.uni-wuerzburg.de/virtualmanuals/root-doku/make/make_5.html#SEC4


dazu muss man natürlich auch wissen, wie man mit avr-gcc umgeht :-)

von A. Füßer (Gast)


Lesenswert?

> Einfache, aber nicht wirklich elegante Lösung: make clean, make.

so mach ichs jetzt. Und noch einen schönen Button in Ultraedit 
integriert und fertig is. Aber was ist daran nicht elegant? (weil es den 
Sinn von make ad absurdum führt?)

>Wenn die Projekte alle miteinander zusammenhängen, ist es besser ein globales 
Makefile zu benutzen, das die entsprechenden dependencies enthält. Ist es für 
Can@home?

Für was sollte es sonst sein? :-)
Globales Makefile ist mir zu aufwendig. Ich pflege lieber pro Projekt 
ein makefile - das erscheint mir einfacher.

Danke für Hilfe,
 André.

--
CAN@home - http://www.CANathome.de - Hausautomation mit AVR + CAN

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
Noch kein Account? Hier anmelden.