Skip to main content

Comprendre les commandes Unix et Linux: make

L'objectif de l'utilitaire make est de déterminer automatiquement quelles parties d'un programme volumineux doivent être recompilées et d'émettre les commandes pour les recompiler. Le manuel décrit la mise en oeuvre GNU de make, qui a été écrite par Richard Stallman et Roland McGrath. Ces exemples montrent les programmes C car ils sont les plus courants, mais vous pouvez utiliser make avec n’importe quel langage de programmation dont le compilateur peut être exécuté avec une commande shell. En fait, make n'est pas limité aux programmes. Vous pouvez l'utiliser pour décrire toute tâche dans laquelle certains fichiers doivent être mis à jour automatiquement à partir d'autres fichiers chaque fois que les autres changent.

Remarque: Cette page est un extrait de la documentation de GNU make. Il n'est mis à jour qu'occasionnellement car le projet GNU n'utilise pas nroff. Pour une documentation complète et à jour, référez-vous au fichier info make.info qui est créé à partir du fichier source Texinfo make.texinfo.

Syntaxe et préparation de l'utilitaire make

faire-F makefile ] [ option ] ... cible ...  

Pour vous préparer à utiliser make, vous devez écrire un fichier appelé le fichier Make, qui décrit les relations entre les fichiers de votre programme et énonce les commandes permettant de mettre à jour chaque fichier. En règle générale, un fichier exécutable est mis à jour à partir de fichiers objet, eux-mêmes créés lors de la compilation des fichiers source.

Une fois qu'un fichier make approprié existe, chaque fois que vous modifiez des fichiers source, cette simple commande shell faire suffit d’effectuer toutes les recompilations nécessaires. Le programme make utilise la base de données makefile et les heures de dernière modification des fichiers pour décider lequel des fichiers doit être mis à jour. Pour chacun de ces fichiers, il émet les commandes enregistrées dans la base de données.

L’utilitaire make exécute des commandes dans le fichier makefile pour mettre à jour un ou plusieurs noms de cibles, oùprénom est typiquement un programme. Sinon-F l'option est présente, make cherchera les makefilesGNUmakefile, makefile, etMakefile, dans cet ordre.

Normalement, vous devriez appeler votre makefile soit Makefile, soit Makefile. (Il est recommandé d'utiliser Makefile car il apparaît en évidence près du début d’une liste de répertoires, à proximité d’autres fichiers importants tels queLISEZMOI.) Le premier nom vérifié, GNUmakefile, n’est pas recommandé pour la plupart des makefiles. Vous devriez utiliser ce nom si vous avez un makefile spécifique à GNU make et que celui-ci ne sera pas compris par les autres versions de make. Si makefile est -, l'entrée standard est lue.

le faire Cet utilitaire met à jour une cible s'il dépend des fichiers de prérequis modifiés depuis la dernière modification de la cible ou si la cible n'existe pas.

Les options

le -b et -m les options sont ignorées pour des raisons de compatibilité avec les autres versions de make.

-C dir changera en répertoire dir avant de lire les makefiles ou de faire autre chose. Si plusieurs-C les options sont spécifiées, chacune est interprétée par rapport à la précédente:-C-C etc. est équivalent à-C / etc. Ceci est généralement utilisé avec les invocations récursives de make.

le -ré option affichera les informations de débogage en plus du traitement normal. Les informations de débogage indiquent quels fichiers doivent être remodelés, quels temps sont comparés, avec quels résultats, quels fichiers doivent être refaits, quelles règles implicites sont considérées et quelles règles sont appliquées - tout ce qui est intéressant à propos de la manière dont make décide quoi faire .

le -e Cette option donne la priorité aux variables issues de l’environnement par rapport aux variables des makefiles.

le -Ffichier option utilisefichier comme un makefile.

le -je L'option ignore toutes les erreurs dans les commandes exécutées pour refaire les fichiers.

le -JEdir option spécifie un répertoiredir pour rechercher les makefiles inclus. Si plusieurs-JE les options sont utilisées pour spécifier plusieurs répertoires, les répertoires sont recherchés dans l'ordre spécifié. Contrairement aux arguments des autres drapeaux de make, les répertoires donnés avec-JE les drapeaux peuvent venir directement après le drapeau:-Idir est autorisé, ainsi que-I dir. Cette syntaxe est autorisée pour la compatibilité avec le préprocesseur C-JE drapeau.

le -j emplois option spécifie le nombre de tâches (commandes) à exécuter simultanément. S'il y a plus d'un-j option, le dernier est efficace. Si la-j l'option est donnée sans argument, make ne limitera pas le nombre de tâches pouvant être exécutées simultanément.

le -k option continue autant que possible après une erreur; alors que la cible qui a échoué et celles qui en dépendent ne peuvent pas être refaites, les autres dépendances de ces cibles peuvent tout de même être traitées.

le -l et -l charge les options spécifient qu'aucun nouveau travail (commande) ne doit être démarré si d'autres travaux sont en cours d'exécution et que la charge moyenne est d'au moinscharge (un nombre à virgule flottante). Sans argument, il supprime une limite de chargement précédente.

le -n option imprime les commandes à exécuter, mais ne les exécute pas.

le -ofichier l'option ne refait pas la fichier même si elle est plus ancienne que ses dépendances et ne refait rien en raison de changements dans fichier. Essentiellement, le fichier est considéré comme très ancien et ses règles sont ignorées.

le -p option imprime la base de données (règles et valeurs de variable) résultant de la lecture des fichiers Make. Il s'exécute ensuite comme d'habitude ou autrement.Ceci imprime également les informations de version fournies par le-v commutateur (voir ci-dessous). Pour imprimer la base de données sans essayer de refaire aucun fichier, utilisezfaire -p -f / dev / null.

le -q option définit le mode question. N'exécutez aucune commande ou imprimez quoi que ce soit, renvoyez simplement un état de sortie nul si les cibles spécifiées sont déjà à jour, sinon zéro.

le -r Cette option élimine l'utilisation des règles implicites intégrées. Efface également la liste de suffixes par défaut pour les règles de suffixe.

le -s L'option réduit au silence l'opération. Il n’imprime pas les commandes lorsqu’elles sont exécutées.

le -S L’option annule l’effet de la-k option. Ceci n'est jamais nécessaire sauf dans une marque récursive -k peut être hérité de la marque de premier niveau via MAKEFLAGS ou si vous définissez-k dans MAKEFLAGS dans votre environnement.

le -t L'option touche les fichiers (les met à jour sans vraiment les changer) au lieu d'exécuter leurs commandes. Ceci est utilisé pour prétendre que les commandes ont été exécutées, afin de tromper les futures invocations de make.

le -v Cette option permet d’imprimer la version du programme make, ainsi qu’un copyright, une liste d’auteurs et un avis de non-garantie.

le -w option imprime un message contenant le répertoire de travail avant et après un autre traitement. Cela peut être utile pour localiser les erreurs de nids compliqués de marques récursives commandes.

le -Wfichier l'option prétend que la cible fichier vient d'être modifié. Lorsqu'il est utilisé avec-n drapeau, cela vous montre ce qui se passerait si vous deviez modifier ce fichier. Sans pour autant-n, c’est presque pareil que courir untoucher commande sur le fichier donné avant d’exécuter make, sauf que le temps de modification n’est modifié que dans l’imagination de make.