mahlzeit,
ich habe mir von
https://www.mikrocontroller.net/articles/Beispiel_Makefile die Makefile
genommen und auf mein Projekt angepasst.
in der runtergeladenen Makefile war anstelle von F_CPU F_OSC
eingetragen. Dies habe ich wieder abgeändert. Desweiteren habe ich noch
den Pfad für AVRDude angepasst. Ich benutze avr-gcc 5.3.0 von SysGCC.
folgende sachen funktionieren nicht
1 | all: begin gccversion sizebefore build sizeafter finished end
|
2 |
|
3 | HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
|
4 | ELFSIZE = $(SIZE) -A $(TARGET).elf
|
5 | sizebefore:
|
6 | @if [ -f $(TARGET).hex ]; then echo; echo $(MSG_SIZE_BEFORE); $(HEXSIZE); echo; fi
|
7 |
|
8 | sizeafter:
|
9 | @if [ -f $(TARGET).hex ]; then echo; echo $(MSG_SIZE_AFTER); $(HEXSIZE); echo; fi
|
sizebefore und sizefinished werden nicht ausgeführt. Diese kann ich auch
rausnehmen, wollte sie aber interessehalber mal drinn haben.
zunächst bekomme ich den Fehler
"-f" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
wenn ich das -f entferne, bekomme ich die Fehlermeldung
"main.hex" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
nehme ich diese zwei Befehle raus, baut alles durch.
Ein weiteres Problem habe ich beim clean
1 | # Target: clean project.
|
2 | clean: begin clean_list finished end
|
3 |
|
4 | clean_list :
|
5 | @echo.
|
6 | @echo $(MSG_CLEANING)
|
7 | $(REMOVE) $(TARGET).hex
|
8 | $(REMOVE) $(TARGET).eep
|
9 | $(REMOVE) $(TARGET).obj
|
10 | $(REMOVE) $(TARGET).cof
|
11 | $(REMOVE) $(TARGET).elf
|
12 | $(REMOVE) $(TARGET).map
|
13 | $(REMOVE) $(TARGET).obj
|
14 | $(REMOVE) $(TARGET).a90
|
15 | $(REMOVE) $(TARGET).sym
|
16 | $(REMOVE) $(TARGET).lnk
|
17 | $(REMOVE) $(TARGET).lss
|
18 | $(REMOVE) $(OBJ)
|
19 | $(REMOVE) $(LST)
|
20 | $(REMOVE) $(SRC:.c=.s)
|
21 | $(REMOVE) $(SRC:.c=.d)
|
22 | $(REMOVE) .dep/*
|
begin, finished und end sind nur echo ausgaben.
wenn ich jetzt allerdings
make clean
in der console eingebe, bekomme ich den Fehler
rm -f main.hex
process_begin: CreateProcess(NULL, rm -f main.hex, ...) failed.
make (e=2): Das System kann die angegebene Datei nicht finden.
make: *** [clean_list] Error 2
die Datei ist aber definitiv da. Warum kann die nicht gelöscht werden?