Der Trick mit make ist, dass es an der Ende beginnt, mit dem, was Sie erstellen möchten, und dann rückwärts zum Anfang geht, um zu sehen, was sich geändert hat.
Also, was ist am Ende: Was möchten Sie produzieren? Anhand Ihres Beispiels werden wir daraus schließen, dass Sie eine komprimierte TAR-Datei mit dem Namen lectures.tar.gz
erstellen möchten. Also, wir brauchen ein Ziel dafür:
lectures.tar.gz:
Was geht in die TAR-Datei? die PDF-Dateien, die Sie bereits entdeckt haben, wie in den OBJ
Variable zu berechnen, so dass diese Dinge müssen als Voraussetzungen von lectures.tar.gz
aufgeführt:
lectures.tar.gz: $(OBJ)
Was ist das Rezept für dieses Ziel? Es sollte eine TAR-Datei mit diesem Namen erstellt werden, die alle Dateien enthält. Eine Möglichkeit, dies ist:
lectures.tar.gz: $(OBJ)
tar czf lectures.tar.gz $(OBJ)
Ein anderer Weg, allgemeinere automatic variables verwenden, wäre:
lectures.tar.gz: $(OBJ)
tar czf [email protected] $^
Nun, wie schaffen Sie die OBJ
Dateien? Für jedes müssen Sie es aus der .ppt
Version kopieren. Da Sie GNU make benutzen (wie durch Ihre Verwendung von wildcard
etc. Funktionen belegt), können Sie dafür einen pattern rule verwenden; das ist das Muster:
%.pdf : %.ppt
cp $< [email protected]
Dieses Muster zeigt machen, wie eine Datei erstellen X.pdf
aus einer beliebigen Datei X.ppt
mit einem cp
Befehl ein: in diesem Fall sind die automatischen Variablen $<
und [email protected]
erforderlich sind, da Sie nicht wissen, die Namen. Dies ist eine implizite Regel, weil die Namen nicht explizit aufgeführt sind, aber durch das Muster impliziert.
Jetzt wie erstellen Sie die .ppt
Dateien? Sie nicht, weil sie Quelldateien sind, also sind Sie fertig!
Oh ja, und 'warum 'willst du es so machen? Warum nicht ein traditionelles Shell-Skript? Viel Glück. – shellter
@shellter Ich habe bereits ein Shell-Skript gemacht, das funktioniert. Dies ist für Hausaufgaben. Ich muss ein Shell-Skript und ein Makefile erstellen, die beide genau dasselbe tun und ich weiß nicht, was ich mit dem Makefile machen soll –