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.

Certaines variables prédéfinies dans GNU Make
VariableSignification
$%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.
ARNom de l'archive maintien programme (valeur par défaut: ar).
ARFLAGSDrapeaux pour la (valeur par défaut: rv) d'archives de maintien programme.
ASNom du programme en assembleur qui convertit le assemblylanguage à (valeur par défaut: comme) le code objet.
ASFLAGSDrapeaux pour l'assembleur.
CCNom du compilateur C (valeur par défaut: cc).
CFLAGSDrapeaux qui sont passés au compilateur C.
CONom du programme qui extrait un fichier de RCS (defaultvalue: co).
COFLAGSDrapeaux pour le RCS co programme.
RPCNom du préprocesseur C (valeur par défaut: $ (CC) -E).
CPPFLAGSDrapeaux pour le préprocesseur C.
CXXNom du compilateur C (par défaut la valeur: g ++).
CXXFLAGSDrapeaux qui sont passés à le compilateur C.
FCNom du compilateur Fortran (valeur par défaut: F77).
FFLAGSDrapeaux pour le compilateur Fortran.
LDFLAGSDrapeaux pour le compilateur quand il est censé invoquer thelinker LD.
RMNom de la commande pour supprimer un fichier (valeur par défaut: rm -f).

» » » » Linux: les variables (ou des macros) dans les utilitaire GNU Make