Eine Makefile ist eine Textdatei, die vom 'make'-Dienstprogramm (und ähnlichen Build-Automatisierungswerkzeugen) zur Steuerung der Kompilierung und des Aufbaus von Softwareprojekten verwendet wird. Sie enthält eine Reihe von Regeln, die Abhängigkeiten zwischen Quelldateien und die erforderlichen Befehle definieren, um diese Quelldateien in ausführbare Programme oder Bibliotheken umzuwandeln. Jede Regel besteht typischerweise aus einem Ziel (der zu erstellenden Datei), einer Liste von Voraussetzungen (Abhängigkeiten) und dem Rezept (Shell-Befehle), das zur Erstellung des Ziels erforderlich ist, falls eine Voraussetzung neuer ist als das Ziel selbst. Makefiles sind entscheidend in der C/C++-Entwicklung und vielen anderen kompilierten Sprachen für die Verwaltung komplexer Build-Prozesse, da sie sicherstellen, dass nur notwendige Rekompilierungen stattfinden, was während der Entwicklungszyklen erhebliche Zeit spart. Sie ermöglichen es Entwicklern, benutzerdefinierte Build-Schritte zu definieren, generierte Dateien aufzuräumen und Bereitstellungsverfahren zu automatisieren. Die Syntax ist hochspezifisch und stützt sich auf Tabs (nicht Leerzeichen) zur Einrückung der Rezeptzeilen, was eine häufige Fehlerquelle für Neulinge in diesem Werkzeug darstellt.