Un Makefile est un fichier texte utilisé par l'utilitaire 'make' (et des outils d'automatisation de construction similaires) pour contrôler la compilation et la construction de projets logiciels. Il contient un ensemble de règles qui définissent les dépendances entre les fichiers sources et les commandes requises pour transformer ces fichiers sources en programmes exécutables ou en bibliothèques. Chaque règle se compose typiquement d'une cible (le fichier à construire), d'une liste de prérequis (dépendances), et de la recette (commandes shell) nécessaire pour créer la cible si un prérequis est plus récent que la cible elle-même. Les Makefiles sont cruciaux dans le développement C/C++ et de nombreux autres langages compilés pour gérer des processus de construction complexes, assurant que seules les recompilations nécessaires se produisent, ce qui fait gagner un temps significatif pendant les cycles de développement. Ils permettent aux développeurs de définir des étapes de construction personnalisées, de nettoyer les fichiers générés et d'automatiser les procédures de déploiement. La syntaxe est très spécifique, reposant sur des tabulations (et non des espaces) pour indenter les lignes de recette, ce qui est une source fréquente d'erreurs pour les nouveaux utilisateurs de cet outil.