Cette annexe récapitule les directives, les fonctions de manipulation de texte et les variables spéciales que comprend GNU make.
Pour d'autres récapitulatifs, voir Noms de cibles spéciales intégrées, Catalogue des règles intégrées et Récapitulatif des options.
Voici un récapitulatif des directives que GNU make reconnaît :
define variabledefine variable =define variable :=define variable ::=define variable :::=define variable +=define variable ?=endefDéfinissent des variables multilignes.
Voir Définition de variables multilignes.
undefine variableAnnule la définition d'une variable.
Voir Annulation de la définition de variables.
ifdef variableifndef variableifeq (a,b)ifeq "a" "b"ifeq 'a' 'b'ifneq (a,b)ifneq "a" "b"ifneq 'a' 'b'elseendifÉvaluent conditionnellement une partie du makefile.
Voir Parties conditionnelles des makefiles.
include file-include filesinclude fileIncluent un autre makefile.
Voir Inclusion d'autres makefiles.
override variable-assignmentDéfinit une variable en redéfinissant (override) toute définition antérieure, même celle donnée en ligne de commande.
Voir La directive override.
exportIndique à make d'exporter par défaut toutes les variables vers les processus enfants.
Voir Communiquer des variables à un sous-make.
export variableexport variable-assignmentunexport variableIndique à make s'il doit ou non exporter une variable particulière vers les processus enfants.
Voir Communiquer des variables à un sous-make.
private variable-assignmentN'autorise pas l'héritage de cette affectation de variable par les prérequis (prerequisite).
Voir Suppression de l'héritage.
vpath pattern pathIndique un chemin de recherche pour les fichiers correspondant à un motif ‘%’.
Voir La directive vpath.
vpath patternSupprime tous les chemins de recherche précédemment indiqués pour pattern.
vpathSupprime tous les chemins de recherche précédemment indiqués dans une directive vpath quelconque.
Voici un récapitulatif des fonctions intégrées (voir Fonctions de transformation de texte) :
$(subst from,to,text)Remplace from par to dans text.
Voir Fonctions de substitution et d'analyse de chaînes.
$(patsubst pattern,replacement,text)Remplace les mots correspondant à pattern par replacement dans text.
Voir Fonctions de substitution et d'analyse de chaînes.
$(strip string)Supprime les caractères d'espacement superflus de string.
Voir Fonctions de substitution et d'analyse de chaînes.
$(findstring find,text)Localise find dans text.
Voir Fonctions de substitution et d'analyse de chaînes.
$(filter pattern…,text)Sélectionne les mots de text qui correspondent à l'un des mots pattern.
Voir Fonctions de substitution et d'analyse de chaînes.
$(filter-out pattern…,text)Sélectionne les mots de text qui ne correspondent à aucun des mots pattern.
Voir Fonctions de substitution et d'analyse de chaînes.
$(sort list)Trie les mots de list par ordre lexicographique en supprimant les doublons.
Voir Fonctions de substitution et d'analyse de chaînes.
$(word n,text)Extrait le n-ième mot (origine 1) de text.
Voir Fonctions de substitution et d'analyse de chaînes.
$(words text)Compte le nombre de mots dans text.
Voir Fonctions de substitution et d'analyse de chaînes.
$(wordlist s,e,text)Renvoie la liste des mots de text du s-ième au e-ième.
Voir Fonctions de substitution et d'analyse de chaînes.
$(firstword names…)Extrait le premier mot de names.
Voir Fonctions de substitution et d'analyse de chaînes.
$(lastword names…)Extrait le dernier mot de names.
Voir Fonctions de substitution et d'analyse de chaînes.
$(dir names…)Extrait la partie répertoire de chaque nom de fichier.
Voir Fonctions pour les noms de fichiers.
$(notdir names…)Extrait la partie hors répertoire de chaque nom de fichier.
Voir Fonctions pour les noms de fichiers.
$(suffix names…)Extrait le suffixe (le dernier ‘.’ et les caractères suivants) de chaque nom de fichier.
Voir Fonctions pour les noms de fichiers.
$(basename names…)Extrait le nom de base (le nom sans suffixe) de chaque nom de fichier.
Voir Fonctions pour les noms de fichiers.
$(addsuffix suffix,names…)Ajoute suffix à la fin de chaque mot de names.
Voir Fonctions pour les noms de fichiers.
$(addprefix prefix,names…)Ajoute prefix au début de chaque mot de names.
Voir Fonctions pour les noms de fichiers.
$(join list1,list2)Concatène deux listes de mots parallèles.
Voir Fonctions pour les noms de fichiers.
$(wildcard pattern…)Trouve les noms de fichiers correspondant à un motif de noms de fichiers du shell (pas un motif ‘%’).
Voir La fonction wildcard.
$(realpath names…)Pour chaque nom de fichier de names, le développe en un nom absolu ne contenant aucun ., .., ni lien symbolique.
Voir Fonctions pour les noms de fichiers.
$(abspath names…)Pour chaque nom de fichier de names, le développe en un nom absolu ne contenant aucun composant . ou .., mais en préservant les liens symboliques.
Voir Fonctions pour les noms de fichiers.
$(error text…)Lorsque cette fonction est évaluée, make génère une erreur fatale avec le message text.
Voir Fonctions de contrôle de Make.
$(warning text…)Lorsque cette fonction est évaluée, make génère un avertissement avec le message text.
Voir Fonctions de contrôle de Make.
$(shell command)Exécute une commande shell et renvoie sa sortie.
Voir La fonction shell.
$(origin variable)Renvoie une chaîne décrivant comment la variable make variable a été définie.
Voir La fonction origin.
$(flavor variable)Renvoie une chaîne décrivant le type (flavor) de la variable make variable.
Voir La fonction flavor.
$(let var [var ...],words,text)Évalue text avec les var liés aux mots de words.
Voir La fonction let.
$(foreach var,words,text)Évalue text avec var lié à chaque mot de words, et concatène les résultats.
Voir La fonction foreach.
$(if condition,then-part[,else-part])Évalue la condition condition ; si elle est non vide, substitue le développement de then-part, sinon substitue le développement de else-part.
Voir Fonctions pour les conditions.
$(or condition1[,condition2[,condition3…]])Évalue chaque condition conditionN une à une ; substitue le premier développement non vide. Si tous les développements sont vides, substitue la chaîne vide.
Voir Fonctions pour les conditions.
$(and condition1[,condition2[,condition3…]])Évalue chaque condition conditionN une à une ; si l'un des développements donne la chaîne vide, substitue la chaîne vide. Si tous les développements donnent une chaîne non vide, substitue le développement de la dernière condition.
Voir Fonctions pour les conditions.
$(intcmp lhs,rhs[,lt-part[,eq-part[,gt-part]]])Compare lhs et rhs numériquement ; substitue le développement de lt-part, eq-part ou gt-part selon que le membre de gauche est inférieur, égal ou supérieur au membre de droite, respectivement.
Voir Fonctions pour les conditions.
$(call var,param,…)Évalue la variable var en remplaçant toute référence à $(1), $(2) par la valeur du premier, du deuxième, etc. param.
Voir La fonction call.
$(eval text)Évalue text puis lit le résultat comme des commandes de makefile. Se développe en la chaîne vide.
Voir La fonction eval.
$(file op filename,text)Développe les arguments, puis ouvre le fichier filename avec le mode op et y écrit text.
Voir La fonction file.
$(value var)S'évalue au contenu de la variable var, sans qu'aucun développement ne lui soit appliqué.
Voir La fonction value.
Voici un récapitulatif des variables automatiques. Pour des informations complètes, voir Variables automatiques.
$@Le nom de fichier de la cible.
$%Le nom du membre cible, lorsque la cible est un membre d'archive.
$<Le nom du premier prérequis.
$?Les noms de tous les prérequis qui sont plus récents que la cible, séparés par des espaces.
Pour les prérequis qui sont des membres d'archive, seul le membre nommé est utilisé (voir Utiliser make pour mettre à jour des fichiers d'archive).
$^$+Les noms de tous les prérequis, séparés par des espaces. Pour les prérequis qui sont des membres d'archive, seul le membre nommé est utilisé (voir Utiliser make pour mettre à jour des fichiers d'archive). La valeur de $^ omet les prérequis en double, tandis que $+ les conserve et préserve leur ordre.
$*Le radical (stem) avec lequel une règle implicite correspond (voir Comment les motifs correspondent).
$(@D)$(@F)La partie répertoire et la partie fichier-dans-le-répertoire de $@.
$(*D)$(*F)La partie répertoire et la partie fichier-dans-le-répertoire de $*.
$(%D)$(%F)La partie répertoire et la partie fichier-dans-le-répertoire de $%.
$(<D)$(<F)La partie répertoire et la partie fichier-dans-le-répertoire de $<.
$(^D)$(^F)La partie répertoire et la partie fichier-dans-le-répertoire de $^.
$(+D)$(+F)La partie répertoire et la partie fichier-dans-le-répertoire de $+.
$(?D)$(?F)La partie répertoire et la partie fichier-dans-le-répertoire de $?.
Les variables suivantes sont utilisées de manière spéciale par GNU make :
MAKEFILESMakefiles à lire à chaque invocation de make.
Voir La variable MAKEFILES.
VPATHChemin de recherche de répertoires pour les fichiers introuvables dans le répertoire courant.
Voir Chemin de recherche VPATH pour tous les prérequis.
SHELLLe nom de l'interpréteur de commandes par défaut du système, généralement /bin/sh.
Vous pouvez définir SHELL dans le makefile pour changer le shell utilisé pour exécuter les recettes (recipe). Voir Exécution des recettes. La variable SHELL est traitée de manière spéciale lors de l'importation depuis l'environnement et de l'exportation vers celui-ci. Voir Choix du shell.
MAKESHELLSous MS-DOS uniquement, le nom de l'interpréteur de commandes que doit utiliser make. Cette valeur a priorité sur celle de SHELL. Voir la variable MAKESHELL.
MAKELe nom avec lequel make a été invoqué. L'utilisation de cette variable dans les recettes a une signification spéciale. Voir Fonctionnement de la variable MAKE.
MAKE_VERSIONLa variable intégrée ‘MAKE_VERSION’ se développe en le numéro de version du programme GNU make.
MAKE_HOSTLa variable intégrée ‘MAKE_HOST’ se développe en une chaîne représentant l'hôte sur lequel GNU make a été compilé pour s'exécuter.
MAKELEVELLe nombre de niveaux de récursion (sous-makes).
Voir Communiquer des variables à un sous-make.
MAKEFLAGSLes drapeaux donnés à make. Vous pouvez la définir dans l'environnement ou un makefile pour fixer des drapeaux.
Voir Communiquer des options à un sous-make.
Il n'est jamais approprié d'utiliser MAKEFLAGS directement dans une ligne de recette : son contenu peut ne pas être correctement protégé (quoté) pour une utilisation dans le shell. Laissez toujours les make récursifs obtenir ces valeurs depuis l'environnement transmis par leur parent.
GNUMAKEFLAGSAutres drapeaux analysés par make. Vous pouvez la définir dans l'environnement ou un makefile pour fixer des drapeaux de ligne de commande de make. GNU make ne définit jamais cette variable lui-même. Cette variable n'est nécessaire que si vous souhaitez définir des drapeaux propres à GNU make dans un makefile conforme à POSIX. Cette variable sera vue par GNU make et ignorée par les autres implémentations de make. Elle n'est pas nécessaire si vous n'utilisez que GNU make ; utilisez alors directement MAKEFLAGS.
Voir Communiquer des options à un sous-make.
MAKECMDGOALSLes cibles passées à make sur la ligne de commande. Définir cette variable n'a aucun effet sur le fonctionnement de make.
Voir Arguments pour spécifier les buts.
CURDIRDéfinie au chemin absolu du répertoire de travail courant (après que toutes les options -C ont été traitées, le cas échéant). Définir cette variable n'a aucun effet sur le fonctionnement de make.
Voir Utilisation récursive de make.
SUFFIXESLa liste par défaut des suffixes avant que make ne lise un quelconque makefile.
.LIBPATTERNSDéfinit la dénomination des bibliothèques que make recherche, ainsi que leur ordre.
Voir Recherche dans les répertoires des bibliothèques de liens.