Seite 1 von 1

Übung 2: Anmerkung zu Make

Verfasst: 14. Jul 2011 10:47
von morgoth
Hey,

da es bei uns in der Übung als falsch angestrichen wurde und in dem Lösungsvorschlag der selbe Fehler auftritt:
In Aufgabe 1 c wird die Datei tiger.jpg verändert und anschließend make aufgerufen. Dabei wird

Code: Alles auswählen

zip pictures.zip puma.png tiger.png
ausgeführt!
Nicht nur

Code: Alles auswählen

zip pictures.zip tiger.png 
Das kommt daher, dass make an der Stelle nicht weiß welche Dateien neu sind und welche nicht, da lediglich $(OBJECTS) an zip übergeben wird. Um das (nach Lösungsvorschlag) gewünschte Ergebnis zu erhalten müsste

Code: Alles auswählen

$(ARCHIVE) $(ARCHIVENAME) $(OBJECTS)
durch

Code: Alles auswählen

$(ARCHIVE) $(ARCHIVENAME) $?
ersetzt werden.

greets

Re: Übung 2: Anmerkung zu Make

Verfasst: 15. Jul 2011 14:59
von saller
Hallo,

Alles klar - habe ich geändert. - Dank Dir für den Hinweis!

Beste Grüße
Karsten

Re: Übung 2: Anmerkung zu Make

Verfasst: 16. Jul 2011 14:52
von s!mon
Hätte auch mal noch eine Frage zu der Übung. Was passiert eigentlich bei der Aufgabe 1f, wenn man im Ordner auch noch eine Datei leopard.jpg hat und nicht nur leopard.bmp?

Man hat ja dann folgenden Code:

Code: Alles auswählen

OBJECTS = $(patsubst %.jpg, %.png, $(wildcard *.jpg)\
$(patsubst %.bmp, %.png, $(wildcard *.bmp)

%.png : %.jpg
$(CONVERT) $< $@

%.png : %.bmp
$(CONVERT) $< $@
Man hätte ja zwei mal das gleiche Ziel (leopard.png) wenn man die Makros expandiert und hätte dann eigentlich drei Möglichkeiten:
- Es gibt einen Fehler und Programmabbruch
- Es werden beide Ziele ausgeführt und dadurch eine Datei überschrieben
- Es wird beispielsweise nur das erste Ziel ausgeführt, dass auf die Beschreibung passt.

Kann mir jemand sagen was dann passiert?