Un Makefile es un archivo de texto utilizado por la utilidad 'make' (y herramientas de automatización de compilación similares) para controlar la compilación y construcción de proyectos de software. Contiene un conjunto de reglas que definen las dependencias entre los archivos fuente y los comandos necesarios para transformar dichos archivos en programas ejecutables o bibliotecas. Cada regla consiste típicamente en un objetivo (el archivo a construir), una lista de prerrequisitos (dependencias) y la receta (comandos de shell) necesaria para crear el objetivo si algún prerrequisito es más reciente que el propio objetivo. Los Makefiles son fundamentales en el desarrollo de C/C++ y muchos otros lenguajes compilados para gestionar procesos de construcción complejos, asegurando que solo se realicen las recompilaciones necesarias, lo que ahorra un tiempo significativo durante los ciclos de desarrollo. Permiten a los desarrolladores definir pasos de construcción personalizados, limpiar archivos generados y automatizar procedimientos de despliegue. La sintaxis es sumamente específica y depende del uso de tabulaciones (no espacios) para indentar las líneas de la receta, lo cual es una fuente común de errores para los principiantes en la herramienta.