Provided by: manpages-fr_4.21.0-2_all 

NOM
make — Utilitaire GNU Make pour la maintenance de groupes de programmes
SYNOPSIS
make [OPTION]... [CIBLE]...
DESCRIPTION
L'utilitaire make détermine automatiquement quels éléments d'un programme complexe doivent être
recompilés et génère les commandes appropriées à cette recompilation. Ce manuel décrit l'implémentation
GNU de make qui a été écrite par Richard Stallman et Roland McGrath, et est actuellement entretenue par
Paul Smith. Nos exemples montrent des programmes en langage C, car ils sont parmi les plus courants, mais
vous pouvez utiliser make avec tout langage de programmation dont le compilateur peut être invoqué à
l'aide de l'interpréteur de commandes. En fait, l'usage de make ne se limite pas aux programmes. Vous
pouvez aussi l'utiliser pour toute tâche où certains fichiers doivent être automatiquement mis à jour à
partir d'autres fichiers chaque fois que ces autres fichiers sont modifiés.
Préalablement à l'utilisation de make, vous devez écrire un fichier qui se nomme le makefile et qui
décrit les relations entre les fichiers de votre programme et fournit les commandes pour mettre à jour
chacun d'entre eux. Dans un programme, le fichier exécutable est en général mis à jour à partir des
fichiers objet, qui sont eux-mêmes générés en compilant les fichiers source.
Une fois le fichier makefile écrit, chaque fois que vous modifierez un ou plusieurs fichiers source, la
simple commande de l'interpréteur :
make
suffira pour effectuer toutes les recompilations nécessaires. Le programme make utilise les descriptions
du makefile et la date de dernière modification des fichiers pour déterminer lesquels doivent être mis à
jour. Pour chacun d'entre eux, il génère les commandes enregistrées dans le makefile.
make exécute les commandes du makefile pour mettre à jour une ou plusieurs cibles, chacune des cibles
correspondant habituellement à un programme. Si aucune option -f n'est présente, make va rechercher les
fichiers de description GNUmakefile, makefile et Makefile, dans cet ordre.
Normalement, vous devez nommer votre fichier makefile makefile ou Makefile (nous recommandons Makefile,
car il apparaîtra alors en premier au début du listing du contenu d'un répertoire et à proximité d'autres
fichiers importants comme README). Le premier nom de fichier recherché, GNUmakefile, n'est pas recommandé
pour la plupart des makefile. Ce nom devra cependant être utilisé si votre makefile est spécifique à GNU
Make et ne sera pas compréhensible par les autres versions de make. Si makefile est « - », c'est l'entrée
standard qui 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 cette cible ou si cette cible n'existe pas.
OPTIONS
-b, -m
Ces options sont ignorées pour des raisons de compatibilité avec les autres versions de make.
-B, --always-make
Traiter toutes les cibles de manière inconditionnelle.
-C répertoire, --directory=répertoire
Se positionner dans le répertoire répertoire avant de lire les makefile ou de faire quoi que ce
soit. Si plusieurs options -C sont spécifiées, chacune d'entre elles est interprétée relativement à
la précédente : -C / -C etc est équivalent à -C /etc. C'est souvent le cas avec les invocations
récursives de make.
-d Afficher les informations de débogage en plus du traitement normal. Les informations de débogage
indiquent quels fichiers sont susceptibles d'être reconstruits, quelles dates de fichiers sont
comparées et avec quel résultat, quels fichiers doivent être effectivement reconstruits, quelles
règles implicites sont susceptibles d'être mises en jeu et lesquelles seront appliquées — en un mot
tout ce qui explique comment make décide ce qu'il doit faire.
--debug[=DRAPEAUX]
Afficher des informations de débogage en plus du traitement normal. Si DRAPEAUX est omis, l'effet de
cette option est identique à celui de l'option -d. DRAPEAUX peut prendre les valeurs suivantes : a
pour afficher toutes les informations de débogage (identique à -d), b pour un débogage basique, v
pour un débogage basique plus explicite, i pour afficher les règles implicites, j pour des détails
sur l'invocation des commandes et m pour un débogage lors de la reconstruction des makefile.
Utiliser n pour désactiver tous les drapeaux de débogage en cours.
-e, --environment-overrides
Donner la priorité aux variables d'environnement par rapport aux variables contenues dans les
makefile.
-f fichier, --file=fichier, --makefile=fichier
Utiliser fichier comme makefile.
-i, --ignore-errors
Ignorer toutes les erreurs provoquées par les commandes exécutées pour reconstruire les fichiers.
-I répertoire, --include-dir=répertoire
Spécifier un répertoire pour rechercher des makefile inclus. Si plusieurs options -I sont utilisées
pour spécifier plusieurs répertoires, la recherche s'effectue dans ces répertoires selon l'ordre
dans lequel ils sont spécifiés. À la différence des arguments des autres drapeaux de make, les
répertoires spécifiés par le drapeau -I peuvent être placés directement après le drapeau :
-Irépertoire est correct, tout comme -I répertoire. Cette syntaxe est permise à des fins de
compatibilité avec le drapeau -I du préprocesseur C.
-j [travaux], --jobs[=travaux]
Spécifier le nombre de travaux (commandes) à exécuter simultanément. S'il y a plusieurs options -j,
c'est la dernière qui est prise en compte. Si l'option -j est spécifiée sans argument, make ne
fixera aucune limite au nombre de travaux pouvant être exécutés simultanément. Lorsque make invoque
sub-make, toutes les instances de make vont se coordonner pour exécuter le nombre spécifié de
travaux à un instant t : voir la section MAKE PARALLÈLE ET LE SERVEUR DE TRAVAUX pour plus de
détails.
--jobserver-fds [R,W]
Option interne que make utilise pour passer aux sub-makes les numéros de descripteur de fichier de
type tube en lecture et écriture du serveur de travaux ; voir la section MAKE PARALLÈLE ET LE
SERVEUR DE TRAVAUX pour plus de détails.
-k, --keep-going
Continuer autant que possible après une erreur. Alors que la cible qui a échoué, ainsi que celles
qui en dépendent, ne peuvent pas être reconstruites, les autres dépendances de ces cibles peuvent
tout de même être traitées.
-l [charge], --load-average[=charge]
Empêcher le démarrage de nouveaux travaux (commandes) si d'autres travaux sont en cours d'exécution
et si la charge moyenne est au moins de charge (un nombre en virgule flottante). Si aucun argument
n'est spécifié, une éventuelle limitation de charge précédemment définie sera annulée.
-L, --check-symlink-times
Utiliser le dernier mtime 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 certaines
circonstances).
-o fichier, --old-file=fichier, --assume-old=fichier
Ne pas reconstruire le fichier fichier même s'il est plus ancien que les fichiers dont il dépend, et
ne pas reconstruire ce qui devrait l'être suite aux modifications de fichier. En gros, le fichier
est considéré comme très ancien et ses règles sont ignorées.
-O[type], --output-sync[=type]
Lorsque plusieurs travaux sont exécutés en parallèle avec -j, s'assurer que les sorties de chaque
travail sont affichées d'un seul bloc, au lieu d'être intercalées avec les sorties des autres
travaux. Si type n'est pas spécifié ou égal à target, les sorties de l'ensemble du traitement de
chaque cible sont affichées d'un seul bloc. Si type est égal à line, les sorties de chaque ligne de
commande d'une recette sont affichées d'un seul bloc. Si type est égal à recurse, les sorties de
l'ensemble d'un make récursif sont affichées d'un seul bloc. Enfin, si type est égal à none, la
synchronisation des sorties est désactivée.
-p, --print-data-base
Afficher la base de données (les règles et les valeurs des variables) générée par l'interprétation
des makefile, puis fonctionner de la manière habituelle ou selon instructions particulières.
Afficher aussi les informations de version telles qu'elles sont fournies avec l'option -v (voir plus
bas). Pour afficher la base de données sans essayer de reconstruire aucun fichier, utilisez make -p
-f/dev/null.
-q, --question
« Mode question ». N'exécuter aucune commande et ne rien afficher ; renvoyer simplement un code
d'état de sortie égal à zéro si les cibles spécifiées sont déjà à jour ou différent de zéro dans le
cas contraire.
-r, --no-builtin-rules
Empêcher l'utilisation des règles implicites intégrées. Effacer aussi la liste de suffixes par
défaut pour les règles de suffixe.
-R, --no-builtin-variables
Ne définir aucune variable intégrée.
-s, --silent, --quiet
Opération silencieuse ; ne pas afficher les commandes à mesure qu'elles sont exécutées.
-S, --no-keep-going, --stop
Annuler l'effet de l'option -k. Ce n'est jamais nécessaire, sauf dans un make récursif où -k peut
être hérité du make de plus haut niveau à l'aide de MAKEFLAGS, ou si vous définissez -k dans
MAKEFLAGS dans votre environnement.
-t, --touch
Marquer les fichiers comme modifiés (les marquer comme à jour sans vraiment les modifier) au lieu
d'exécuter leurs commandes. Cette fonctionnalité permet de prétendre que les commandes ont été
exécutées afin de tromper les futures invocations de make.
--trace
Afficher des informations à propos de la situation de chaque cible (pourquoi la cible est
reconstruite et quelles commandes sont exécutées pour cette reconstruction).
-v, --version
Afficher la version du programme make plus un copyright, une liste d'auteurs et un avertissement
indiquant qu'il n'y a aucune garantie.
-w, --print-directory
Afficher un message contenant le répertoire de travail avant et après d'autres traitements. Cela
peut s'avérer utile pour rechercher des erreurs issues d'une imbrication complexe de commandes make
récursives.
--no-print-directory
Désactiver -w, même si cette option avait été implicitement activée.
-W fichier, --what-if=fichier, --new-file=fichier, --assume-new=fichier
Prétendre que la cible fichier vient d'être modifiée. Lorsqu'elle est utilisée avec le drapeau -n,
cette option vous permet de voir ce qui se passerait si vous modifiez ce fichier. Sans -n, cette
option produit le même effet que d'exécuter une commande touch sur le fichier donné avant d'exécuter
make, à la différence que la date de modification n'est modifiée que dans l'imagination de make.
--warn-undefined-variables
Afficher un avertissement lorsqu'une variable non définie est référencée.
CODE DE RETOUR
GNU Make rend la main avec un état 0 si tous les makefile ont été traités avec succès et si aucune
construction de cible n'a échoué. Un état 1 sera renvoyé si le drapeau -q a été activé et si make
détermine qu'une cible a besoin d'être reconstruite. Un état 2 sera renvoyé si une erreur est rencontrée.
VOIR AUSSI
La documentation complète de make est maintenue sous forme de manuel Texinfo. Si les programmes info et
make sont correctement installés sur votre système, la commande
info make
devrait vous donner accès au manuel complet. Le manuel est aussi disponible en ligne à
https://www.gnu.org/software/make/manual/html_node/index.html
MAKE PARALLÈLE ET LE SERVEUR DE TRAVAUX
L'option -j permet à l'utilisateur de demander à make d'exécuter les tâches en parallèle. Il peut aussi
ajouter un argument numérique à -j pour définir une limite supérieure au nombre de tâches parallèles à
exécuter.
Lorsque l'environnement de compilation fait qu'un make de premier niveau invoque des sub-makes (par
exemple lorsque chaque sous-répertoire possède son propre Makefile), aucune instance de make ne peut
déterminer de manière isolée combien de tâches s'exécutent en parallèle ; maintenir le nombre de tâches
en dessous d'une certaine limite serait donc impossible sans une communication entre toutes les instances
de make en cours d'exécution. Des solutions comme faire en sorte que le make de premier niveau serve de
contrôleur central sont envisageables ; on pourrait aussi utiliser d'autres mécanismes de synchronisation
comme la mémoire partagée ou les sockets ; l'implémentation actuelle utilise cependant un simple tube
partagé.
Ce tube est créé par le processus make de plus haut niveau et passé à tous les sub-makes. Le processus
make de plus haut niveau écrit N-1 jetons d'un octet dans le tube (le processus make de plus haut niveau
est censé réserver un jeton pour lui-même). Chaque fois qu'un des processus make (y compris celui de plus
haut niveau) doit effectuer une nouvelle tâche, il lit un octet depuis le tube partagé. S'il n'y a plus
de jetons à lire depuis le tube, il doit attendre qu'un jeton y soit écrit. Lorsque sa tâche est
terminée, le processus make écrit un jeton dans le tube (débloquant ainsi le premier processus make
attendant la présence d'un jeton, dans le cas où il n'en restait plus de disponible). Pas plus de N
tâches ne peuvent être exécutées en même temps, car seulement N-1 jetons sont écrits dans le tube.
Si le travail à exécuter n'est pas un sub-make, make ferme les descripteurs de fichier du tube du serveur
de travaux avant d'invoquer les commandes pour que la commande n'interfère pas avec le jobserver et
qu'elle ne trouve pas de descripteurs de fichiers inhabituels.
BOGUES
Voir le chapitre « Problems and Bugs » dans Le manuel de GNU Make.
AUTEUR
Cette page de manuel a été rédigée par Dennis Morse de l'Université de Stanford. Des mises à jour
ultérieures ont été apportées par Mike Frysinger. Elle a été remaniée par Roland McGrath et est maintenue
par Paul Smith.
COPYRIGHT
Copyright © 1992-1993, 1996-2016 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 selon les termes de la GNU
General Public License telle qu'elle est publiée par la Free Software Foundation ; la version 3 de la
licence ou (selon votre choix) 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 QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la GNU General Public License
pour plus de détails.
Vous devriez avoir reçu une copie de la GNU General Public License avec ce programme. Dans le cas
contraire, voir http://www.gnu.org/licenses/.
TRADUCTION
La traduction française de cette page de manuel a été créée par Lucien Gentis <lucien.gentis@waika9.com>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License
version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.
GNU 28 février 2016 MAKE(1)