L'utilitaire make détermine automatiquement quelles parties d'un grand programme doivent être recompilées, et émet les commandes nécessaires pour les recompiler. Ce manuel décrit la version GNU, GNU make. GNU make a été implémenté par Richard M. Stallman et Roland McGrath ; depuis la version 3.76, son développement est assuré par Paul D. Smith.
GNU make est conforme à la section 6.2 de la norme IEEE Standard 1003.2-1992 (POSIX.2).
Nos exemples portent sur des programmes en langage C, car c'est le plus répandu, mais vous pouvez employer make avec n'importe quel langage de programmation dont le compilateur peut être lancé par une commande shell. Mieux encore, make ne se limite pas aux programmes. Vous pouvez l'utiliser pour décrire n'importe quelle tâche où certains fichiers doivent être mis à jour automatiquement à partir d'autres dès que ces derniers changent.
Pour préparer l'utilisation de make, vous devez écrire un fichier appelé makefile qui décrit les relations entre les fichiers de votre programme et fournit les commandes permettant de mettre à jour chacun d'eux. Dans un programme, le fichier exécutable est généralement produit à partir de fichiers objets, eux-mêmes obtenus en compilant des fichiers sources.
Une fois qu'un makefile adéquat existe, chaque fois que vous modifiez des fichiers sources, cette simple commande shell :
make
suffit à effectuer toutes les recompilations nécessaires. Le programme make s'appuie sur la base de données du makefile et sur la date de dernière modification des fichiers pour décider lesquels doivent être mis à jour. Pour chacun de ces fichiers, il émet les recettes (recipe) enregistrées dans la base de données.
Vous pouvez passer des arguments en ligne de commande à make pour contrôler quels fichiers doivent être recompilés, ou de quelle manière. Voir le chapitre Comment exécuter make.
Si vous débutez avec make, ou si vous cherchez une introduction générale, lisez les premières sections de chaque chapitre et passez les sections suivantes. Dans chaque chapitre, les premières sections contiennent des informations introductives ou générales, tandis que les dernières renferment des informations spécialisées ou techniques. L'exception est le deuxième chapitre, Introduction aux Makefiles, qui est entièrement introductif.
Si vous êtes familier d'autres programmes make, consultez le chapitre Fonctionnalités de GNU make, qui recense les améliorations apportées par GNU make, ainsi que le chapitre Incompatibilités et fonctionnalités manquantes, qui explique les quelques rares points dont GNU make est dépourvu par rapport aux autres.
Pour un résumé rapide, reportez-vous au sommaire des options, à la référence rapide, ainsi qu'aux noms de cibles spéciales intégrées.
Si vous rencontrez des problèmes avec GNU make ou pensez avoir trouvé un bogue, n'hésitez pas à le signaler aux développeurs ; nous ne pouvons rien promettre, mais il est fort possible que nous souhaitions le corriger.
Avant de signaler un bogue, assurez-vous d'en avoir réellement trouvé un. Relisez attentivement la documentation et vérifiez qu'elle indique bien que vous pouvez faire ce que vous tentez de faire. Si l'on ne voit pas clairement si quelque chose devrait être possible ou non, signalez-le également : c'est un bogue de la documentation !
Avant de signaler un bogue ou d'essayer de le corriger vous-même, tâchez de l'isoler dans le plus petit makefile possible qui reproduise le problème. Envoyez-nous ensuite ce makefile et le résultat exact que make vous a renvoyé, y compris les éventuels messages d'erreur ou d'avertissement. Veuillez ne pas paraphraser ces messages : le mieux est de les copier-coller tels quels dans votre rapport. Lorsque vous créez ce petit makefile, veillez à n'utiliser dans vos recettes aucun outil non libre ou inhabituel : vous pouvez presque toujours reproduire le comportement d'un tel outil au moyen de simples commandes shell. Enfin, prenez soin d'expliquer ce que vous attendiez : cela nous aidera à déterminer si le problème venait en réalité de la documentation.
Une fois le problème précisément cerné, vous pouvez le signaler de deux manières. Soit en envoyant un courrier électronique à :
bug-make@gnu.org
soit en utilisant notre outil web de gestion de projet, à l'adresse :
https://savannah.gnu.org/projects/make/
En plus des informations ci-dessus, veillez à indiquer le numéro de version de make que vous utilisez. Vous pouvez l'obtenir avec la commande make --version. Pensez aussi à préciser le type de machine et le système d'exploitation que vous employez. Une façon d'obtenir ces informations consiste à examiner les dernières lignes de la sortie de la commande make --help.
Si vous souhaitez soumettre une modification de code, consultez la section « Submitting Patches » du fichier README pour plus d'informations.
(N.d.T. : les coordonnées ci-dessus sont celles, conformes à l'original, du projet d'origine (GNU). Les rapports de bogues sont de préférence à rédiger en anglais, et vous ne devez pas signaler au projet GNU les erreurs propres à cette traduction. Pour toute remarque relative à la traduction, veuillez vous adresser à ecoop.net.)