Les sources d?un logiciel comprennent beaucoup de fichiers, incorporent des librairies et taper à la main les lignes de compilation de chacun des fichiers serait très fastidieux. Pour simplifier les compilations de projets sous Unix, il existe l?utilitaire make : il permet d'interpréter un fichier de dépendance entre les différents éléments nécessaires à la création d'un projet. Ce fichier est appelé Makefile. Il définit les relations entre des fichiers qui permettent d'établir les dépendances nécessaires à la création d'autres fichiers. Si, pour créer un fichier A, il faut utiliser un fichier B, alors il va d'abord falloir créer le fichier B.
Le travail de make est essentiellement de vérifier les dates des fichiers pour déterminer quels sont ceux qui sont à jour et ceux qu'il faut recréer afin de générer le projet. Pour chacun des fichiers à recréer, make détermine gràce au makefile les librairies à lier, et les arguments à passer à gcc puis lance la compilation.
make simplifie beaucoup le travail du programmeur puisqu'au lieu de taper les argument de gcc à chaque compilation, il suffit de lancer make.
En général, les fichiers makefile contiennent une cible nommée « all », qui permet de générer tout le projet. Make peut aussi être utilisé dans un autre contexte que la programmation : il permet d'éffectuer des commandes de mises à jour de fichiers qui dépendent de la mise à jour d'autres fichiers.