Linux: les variables (ou des macros) dans les utilitaire GNU Make
La GNU faire utilité dans Linux vient à votre secours par la lecture et l'interprétation d'une makefile. En plus de la capacité de base des objectifs de renforcement de charge, GNU faire comprend de nombreuses fonctionnalités qui le rendent facile pour vous d'exprimer les dépendances et les règles pour la construction d'une cible de ses personnes à charge.
Si vous avez besoin de compiler un grand nombre de fichiers C ++ en utilisant GCC avec les mêmes options, par exemple, en tapant les options pour chaque fichier est fastidieux. Vous pouvez éviter cette tâche répétitive en définissant une variable ou macro en maquillage comme suit:
# Définir des macros pour nom de compilerCXX = g ++ # Définir une macro pour la GCC flagsCXXFLAGS = -O2 -g -mcpu = i686 # Une règle pour construire une fileform.o objet: form.C form.h $ (CXX) -c $ (CXXFLAGS) form.C
Dans cet exemple, CXX et CXXFLAGS sont des variables faire. (GNU faire préfère les appeler variables, mais la plupart Unix faire utilitaires appellent macros.)
Pour utiliser une variable partout dans le makefile, commencer avec un signe de dollar ($), Suivie par la variable entre parenthèses. GNU make remplace toutes les occurrences d'une variable avec son definition- ainsi, il remplace toutes les occurrences de $(CXXFLAGS) Avec la chaîne -O2 -g -mcpu = i686.
GNU make a plusieurs variables prédéfinies qui ont des significations particulières. Ce tableau répertorie ces variables. En plus des variables énumérés ici, GNU faire considère toutes les variables d'environnement (tels que PATH et DOMICILE) Pour être prédéfinies des variables ainsi.
Variable | Signification |
---|---|
$% | Nom de membre pour les cibles qui sont des archives. Si la cible estlibDisp.a (image.o), par exemple, $% est image.o. |
$ * | Nom du fichier cible sans l'extension. |
$ + | Les noms de tous les fichiers dépendants avec dépendances en double, énumérés dans leur ordre d'apparition. |
lt $; | Le nom du premier fichier dépendant. |
$? | Les noms de tous les fichiers dépendants (avec des espaces entre les noms) qui sont plus récents que la cible. |
$ @ | Nom complet de la cible. Si la cible est libDisp.a image.o), par exemple, $ @ est libDisp.a. |
$ ^ | Les noms de tous les fichiers dépendants, avec des espaces entre les names.Duplicates sont retirés des noms de fichiers dépendants. |
AR | Nom de l'archive maintien programme (valeur par défaut: ar). |
ARFLAGS | Drapeaux pour la (valeur par défaut: rv) d'archives de maintien programme. |
AS | Nom du programme en assembleur qui convertit le assemblylanguage à (valeur par défaut: comme) le code objet. |
ASFLAGS | Drapeaux pour l'assembleur. |
CC | Nom du compilateur C (valeur par défaut: cc). |
CFLAGS | Drapeaux qui sont passés au compilateur C. |
CO | Nom du programme qui extrait un fichier de RCS (defaultvalue: co). |
COFLAGS | Drapeaux pour le RCS co programme. |
RPC | Nom du préprocesseur C (valeur par défaut: $ (CC) -E). |
CPPFLAGS | Drapeaux pour le préprocesseur C. |
CXX | Nom du compilateur C (par défaut la valeur: g ++). |
CXXFLAGS | Drapeaux qui sont passés à le compilateur C. |
FC | Nom du compilateur Fortran (valeur par défaut: F77). |
FFLAGS | Drapeaux pour le compilateur Fortran. |
LDFLAGS | Drapeaux pour le compilateur quand il est censé invoquer thelinker LD. |
RM | Nom de la commande pour supprimer un fichier (valeur par défaut: rm -f). |