make - Utilitaire GNU Make pour gérer des groupes de programmes
SYNTAXE
make [OPTION]... [CIBLE]...
DESCRIPTION
L'utilitaire make détermine automatiquement quelles parties d'un programme volumineux doivent être recompilées et exécute les commandes nécessaires pour les recompiler. Le manuel décrit l'implémentation GNU de make, qui a été écrite par Richard Stallman et Roland McGrath, et qui est actuellement maintenue par Paul Smith. Nos exemples montrent des programmes C, car ils sont très 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 n'importe quelle tâche où certains fichiers doivent être mis à jour automatiquement à partir d'autres chaque fois que les autres changent.
Pour préparer l'utilisation de make, vous devez écrire un fichier appelé le fichier makefile qui décrit les relations entre les fichiers de votre programme et fournit des commandes pour mettre à jour chaque fichier. Dans un programme, le fichier exécutable est généralement mis à jour à partir de fichiers objets, qui sont à leur tour créés en compilant les fichiers sources.
Une fois qu'un fichier makefile approprié existe, chaque fois que vous modifiez certains fichiers sources, la commande shell suivante suffit pour effectuer toutes les recompilations nécessaires :
make
make utilise la description du fichier makefile et les dates de dernière modification des fichiers pour déterminer quels fichiers doivent être mis à jour. Pour chacun de ces fichiers, il exécute les commandes enregistrées dans le fichier makefile.
make exécute les commandes dans le fichier makefile pour mettre à jour une ou plusieurs cibles, où une cible est généralement un programme. Si aucune option -f n'est présente, make recherchera les fichiers makefiles GNUmakefile, makefile et Makefile, dans cet ordre.
Normalement, vous devez nommer votre fichier makefile soit makefile, soit Makefile. (Nous recommandons Makefile car il apparaît bien en évidence au début d'une liste de répertoires, juste à côté d'autres fichiers importants tels que README.) Le premier nom vérifié, GNUmakefile, n'est pas recommandé pour la plupart des fichiers makefile. Vous devez utiliser ce nom si vous avez un fichier makefile qui est spécifique à GNU Make et qui ne sera pas compris par d'autres versions de make. Si makefile est '-', l'entrée standard est lue.
make met à jour une cible si elle dépend de fichiers prérequis qui ont été modifiés depuis la dernière modification de la cible, ou si la cible n'existe pas.
OPTIONS
-b, -m
Ces options sont ignorées pour la compatibilité avec d'autres versions de make.
-B, --always-make
Force la création de toutes les cibles.
-C dir, --directory=dir
Change de répertoire en dir avant de lire les fichiers makefile ou d'effectuer d'autres opérations. Si plusieurs options -C 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 des invocations récursives de make.
-d Affiche des informations de débogage en plus du traitement normal. Les informations de débogage
indiquent quels fichiers sont pris en compte pour être reconstruits, quels moments de fichiers sont comparés et
avec quels résultats, quels fichiers doivent réellement être reconstruits, quelles règles implicites sont prises en compte et lesquelles sont appliquées : tout ce qui est intéressant sur la façon dont `make` décide quoi faire.
--debug[=FLAGS]
Affiche des informations de débogage en plus du traitement normal. Si les indicateurs `FLAGS` sont omis,
le comportement est le même que si l’option `-d` était spécifiée. `FLAGS` peut être n’importe lequel des noms suivants, séparés par des virgules ou des espaces. Seul le premier caractère est important : le reste
peut être omis. `all` pour toutes les informations de débogage (équivalent à l’utilisation de `-d`), `basic` pour le débogage de base,
`verbose` pour un débogage de base plus détaillé, `implicit` pour afficher les opérations de recherche de règles implicites, `jobs` pour les détails sur l’invocation des commandes, `makefile` pour le débogage lors de la reconstruction
des fichiers `Makefile`, `print` pour afficher toutes les recettes qui sont exécutées, même si elles sont silencieuses, et `why` pour afficher la
raison pour laquelle `make` a décidé de reconstruire chaque cible. Utilisez `none` pour désactiver tous les indicateurs de débogage précédents.
-e, --environment-overrides
Donne aux variables provenant de l’environnement la priorité sur les variables provenant des fichiers `Makefile`.
-E string, --eval string
Interprète la chaîne à l’aide de la fonction `eval`, avant d’analyser les fichiers `Makefile`.
-f file, --file=file, --makefile=FILE
Utilise `file` comme fichier `Makefile`.
-i, --ignore-errors
Ignore toutes les erreurs dans les commandes exécutées pour reconstruire les fichiers.
-I dir, --include-dir=dir
Spécifie un répertoire `dir` dans lequel rechercher les fichiers `Makefile` inclus. Si plusieurs options `-I` 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 indicateurs de `make`, les répertoires fournis avec les indicateurs `-I` peuvent être placés directement après l’indicateur : `-Idir` est autorisé, ainsi que `-I dir`. Cette syntaxe est autorisée pour la compatibilité
avec l’indicateur `-I` du préprocesseur C.
-j [jobs], --jobs[=jobs]
Spécifie le nombre de tâches (commandes) à exécuter simultanément. S’il y a plus d’une option `-j`, la dernière est effective. Si l’option `-j` est fournie sans argument, `make` ne limitera pas le nombre de tâches pouvant être exécutées simultanément.
--jobserver-style=style
Le style de serveur de tâches à utiliser. Le style peut être l’un des suivants : `fifo`, `pipe` ou `sem` (uniquement sous Windows).
-k, --keep-going
Continue autant que possible après une erreur. Bien que la cible qui a échoué et celles qui en dépendent ne puissent pas être reconstruites, les autres dépendances de ces cibles peuvent toujours être traitées.
-l [load], --load-average[=load]
Spécifie qu’aucune nouvelle tâche (commande) ne doit être démarrée s’il y a d’autres tâches en cours et que
la charge moyenne est d’au moins `load` (un nombre à virgule flottante). Sans argument, supprime une limite de charge précédente.
-L, --check-symlink-times
Utiliser la date de modification la plus récente entre les liens symboliques et la cible.
-n, --just-print, --dry-run, --recon
Afficher les commandes qui seraient exécutées, mais ne pas les exécuter (sauf dans certains cas).
-o file, --old-file=file, --assume-old=file
Ne pas recréer le fichier file même s’il est plus ancien que ses dépendances, et ne pas recréer quoi que ce soit en raison des modifications apportées à file. Essentiellement, le fichier est traité comme étant très ancien et ses règles sont ignorées.
-O[type], --output-sync[=type]
Lors de l’exécution de plusieurs tâches en parallèle avec -j, s’assurer que la sortie de chaque tâche est collectée ensemble plutôt que d’être entremêlée avec la sortie d’autres tâches. Si le type n’est pas spécifié ou est target, la sortie de l’ensemble du script pour chaque cible est regroupée. Si le type est line, la sortie de chaque ligne de commande dans un script est regroupée. Si le type est recurse, la sortie d’un ensemble de scripts récursifs est regroupée. Si le type est none, la synchronisation de la sortie est désactivée.
-p, --print-data-base
Afficher la base de données (règles et valeurs de variables) qui résulte de la lecture des fichiers Makefile ; puis exécuter comme d’habitude ou comme spécifié. Cela affiche également les informations de version fournies par l’option -v (voir ci-dessous). Pour afficher la base de données sans essayer de recréer des fichiers, utilisez make -p -f/dev/null.
-q, --question
« Mode question ». Ne pas exécuter de commandes ni afficher quoi que ce soit ; renvoyer simplement un code de sortie qui est zéro si les cibles spécifiées sont déjà à jour, différent de zéro dans le cas contraire.
-r, --no-builtin-rules
Éliminer l’utilisation des règles implicites intégrées. Effacer également la liste par défaut des suffixes pour les règles de suffixe.
-R, --no-builtin-variables
Ne définir aucune variable intégrée.
-s, --silent, --quiet
Fonctionnement silencieux ; ne pas afficher les commandes lors de leur exécution.
--no-silent
Annuler l’effet de l’option -s.
-S, --no-keep-going, --stop
Annuler l’effet de l’option -k.
-t, --touch
Modifier les fichiers (indiquer qu’ils sont à jour sans réellement les modifier) au lieu d’exécuter leurs commandes. Ceci est utilisé pour faire semblant que les commandes ont été exécutées, afin de tromper les invocations ultérieures de make.
--trace
Des informations sur le statut de chaque cible sont affichées (pourquoi la cible est en cours de reconstruction et quelles commandes sont exécutées pour la reconstruire).
-v, --version
Afficher la version du programme make, ainsi qu’un copyright, une liste d’auteurs et une note indiquant qu’il n’y a aucune garantie.
-w, --print-directory
Afficher un message contenant le répertoire de travail avant et après tout autre traitement. Cela peut être utile pour rechercher les erreurs dans des ensembles complexes de commandes make récursives.
--no-print-directory
Désactiver -w, même s’il a été activé implicitement.
--shuffle[=MODE]
Activer le mélange de l’ordre des cibles et des prérequis. MODE est l’un des éléments suivants : none pour désactiver le mode de mélange, random pour mélanger les prérequis dans un ordre aléatoire, reverse pour considérer les prérequis dans l’ordre inverse ou un entier <seed> qui active le mode aléatoire avec une valeur de seed spécifique. Si MODE est omis, la valeur par défaut est random.
-W file, --what-if=file, --new-file=file, --assume-new=file
Fait comme si le fichier cible venait d’être modifié. Lorsqu’il est utilisé avec l’option -n, il montre ce qui se passerait si vous modifiez ce fichier. Sans l’option -n, c’est presque la même chose que d’exécuter une commande touch sur le fichier donné avant d’exécuter make, sauf que l’heure de modification est modifiée uniquement dans l’imagination de make.
--warn-undefined-variables
Affiche un avertissement lorsqu’une variable non définie est référencée.
STATUT DE SORTIE
GNU Make se termine avec un statut de zéro si tous les fichiers Makefile ont été analysés avec succès et qu’aucune des cibles qui ont été construites n’a échoué. Un statut de un sera renvoyé si l’option -q a été utilisée et que make détermine qu’une cible doit être reconstruite. Un statut de deux sera renvoyé si des erreurs ont été rencontrées.
CONSULTER AUSSI
La documentation complète de make est conservée sous forme de manuel Texinfo. Si les programmes info et make sont correctement installés sur votre site, la commande
info make
devrait vous donner accès au manuel complet.
BOGUES
Consultez le chapitre « Problèmes et bogues » dans le manuel GNU Make.
AUTEUR
Cette page de manuel a été fournie par Dennis Morse de l’Université de Stanford. D’autres mises à jour ont été fournies par Mike Frysinger. Elle a été remaniée par Roland McGrath. Maintenue par Paul Smith.
COPYRIGHT
Copyright © 1992-1993, 1996-2023 Free Software Foundation, Inc. Ce fichier fait partie de GNU Make.
GNU Make est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier en respectant les termes de la licence publique générale GNU publiée par la Free Software Foundation ; soit la version 3 de la licence, soit (à votre guise) toute version ultérieure.
GNU Make est distribué dans l’espoir qu’il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de commercialisation ou d’aptitude à un usage particulier. Consultez la licence publique générale GNU pour plus de détails.
Vous auriez dû recevoir une copie de la licence publique générale GNU avec ce programme. Si ce n’est pas le cas, consultez https://www.gnu.org/licenses/.