Übung 5:

  1. Schreiben Sie ein Makefile, das mehrere Ziele erstellen kann. Geben Sie "all" als erstes Ziel an, das von den übrigen Ziele abhängt.
    Hinweis: Sie dürfen die eingebauten Regeln von GNU make verwenden, wenn Sie möchten. Sie bekommen den Regelsatz durch Aufruf von "gmake -np" (passend zu einem evtl. Makefile im aktuellen Verzeichnis).
  2. Starten Sie make so, daß während des Abarbeitens einer Regel ein Fehler auftritt (z.B. weil ein Compileraufruf nicht klappt). Erstellen Sie dazu geeignete Regeln und ggf. geeignete Eingabedateien mit Fehlern.
  3. Rufen Sie in einer Makeregel ein Kommando auf, dem Sie den Inhalt einer Umgebungsvariablen übergeben. Was ist dabei zu beachten?
  4. Setzen Sie in einer Zeile einer Regel eine Umgebungsvariable, auf die Sie später in derselben Regel zugreifen. Was beobachten Sie, und wie ist das zu erklären? Wie kann man das Problem lösen?
  5. Rufen Sie gcc (oder g++) mit den Optionen -MM und -M auf, und betrachten Sie die Ausgabe. Was fällt Ihnen auf?
  6. Studieren Sie dieses Makefile (das der Compilerbau-Vorlesung entnommen ist), und machen Sie sich klar, was die einzelnen Regeln bedeuten. Lesen Sie ggf. über die verwendeten Spezialsymbole und Funktionen in den Info-Seiten nach (am einfachsten unter "Quick Reference"); die Manpage behandelt beinahe ausschließlich die Optionen beim Aufruf.
  7. Mit der Option -C kann man make rekursiv aufrufen: make wechselt in das angegebene Verzeichnis und führt einen neuen Buildvorgang mit dem dortigen Makefile durch. Ein Beispiel dafür gibt es im Lisp-Paket von Herrn Professor Geisse. Welches Problem kann es bei den dort verwendeten Schleifen geben, und wie kann man es lösen?
  8. Schreiben Sie ein Javaprogramm (Hello-World reicht aus), und erstellen Sie eine ant-Konfigurationsdatei dafür. Fügen Sie außer den Zielen, die die in der Vorlesung gezeigte Konfiguration enthielt, auch das Ziel "run" hinzu, das den Inhalt des jar-Archivs ausführt.