TIL: Ein Makefile gehört überall hin

Viele Directories auf meinem Rechner enthalten Daten oder Projekte, welche mit bestimmten Befehlen verarbeitet werden. Seien es die GoPro-Bilder für Mapillary, Tasks für den Podcast-Workflow, Exporte von Affinity Photo die auf einen Webserver geladen werden müssen oder Fotos aus welchen thumbsup die Familien-Fotogalerie erstellt. So ziemlich jedes dieser Directories enthält ein Makefile. make ist mein Standard-Tool, um sich wiederholende Tasks im einfachen Zugriff zu haben und zu dokumentieren.

Neben diesen Directories – welche unter meiner Kontrolle sind – gibt es Ordner mit fremden Inhalten, z. B. von Github geclonte Software-Repositories. Hier lege ich mir oft eigene Makefiles oder Notizen an, um mir bestimmte Aufgaben zu erleichtern.

Die Standard-Location für ein Makefile ist direkt im Root-Verzeichnis des Repositories. Legt man hier das Makefile ab, besteht die Gefahr, dass es versehentlich beim nächsten Commit mit ins Repository wandert. Oder das Projekt bringt bereits ein eigenes Makefile mit – auch dieses möchte ich nicht mit meinen eigenen Targets anreichern.

Ich erstelle mir daher in derartigen Projekten immer ein Subdirectory .mjaschen (eine Namenskollision ist so sehr unwahrscheinlich) und lege das Makefile (und manchmal auch andere Sachen wie Notizen/eigene Dokumentation) dort hinein.

Der Pfad zum Makefile kann make per Command Line-Option mitgeteilt werden:

1
make -f .mjaschen/Makefile TARGET

Ein Alias bietet sehr schnellen Zugriff:

1
alias mm="make -f .mjaschen/Makefile"

In der globalen .gitignore gibt es einen passenden Eintrag, sodass dieses Subdirectory nicht versehentlich ins Repository committet wird:

*~
.DS_Store
.mjaschen/