Make

Ein echter Tausendsassa ist das Programm make(1). Ursprünglich wurde es entwickelt, um die Kompilierung von C-Code zu steuern, also für die Übersetzung des Quelltextes in ein (binäres) Programm, das der Rechner dann ausführen kann. Diese Aufgabe erfordert oft den Aufruf mehrerer Programme, und den Aufruf desselben Programms für zwar verschiedene Dateien, aber mit denselben Einstellungen. Dabei ist es meistens so, daß es nach einem fehlgeschlagenen Programmlauf meistens sinnlos ist, die Übersetzung fortzusetzen, sondern stattdessen sofort einen Fehler auszugeben. Außerdem ist es häufig sinnvoll, das Programm nicht nur zu übersetzen, sondern auch, alles danach wieder aufzuräumen und Dateien zu löschen, die nur zur Übersetzung benötigt worden sind.

Aus diesen Zielen folgen die Eigenschaften, die make(1) so wertvoll für die Automatisierung machen:

und weitere. Dabei bricht make(1) die Abarbeitung des aktuellen Target sofort ab, sobald ein Programm einen Fehler zurückgibt. Außerdem gibt make(1) üblicherweise aus, was es als Nächstes tun wird.

Diese Funktionen sind nicht nur für die Übersetzung von C-Programmen, sondern auch in vielen anderen Bereichen nützlich. So verwende ich make(1) im vorliegenden Projekt nicht nur für die Übersetzung der Dokumentation, die Sie gerade lesen, von Markdown in HTML, sondern auch für die Übersetzung des Golang-Quellcodes in ein ausführbares Programm.

Zugegeben: make(1) besitzt eine kleine Einstiegshürde. Aber wer diese überwunden und es einige Male benutzt hat, will es nicht mehr missen.