Makefile - Macros
le makeprogramme vous permet d'utiliser des macros, qui sont similaires aux variables. Les macros sont définies dans un Makefile comme = paires. Un exemple a été montré ci-dessous -
MACROS = -me
PSROFF = groff -Tps
DITROFF = groff -Tdvi
CFLAGS = -O -systype bsd43
LIBS = "-lncurses -lm -lsdl"
MYFACE = ":*)"
Macros spéciales
Avant d'émettre une commande dans un ensemble de règles cible, certaines macros spéciales sont prédéfinies -
$ @ est le nom du fichier à créer.
$? correspond aux noms des personnes à charge modifiées.
Par exemple, nous pourrions utiliser une règle comme suit -
hello: main.cpp hello.cpp factorial.cpp
$(CC) $(CFLAGS) $? $(LDFLAGS) -o [email protected]
Alternatively:
hello: main.cpp hello.cpp factorial.cpp
$(CC) $(CFLAGS) [email protected] $(LDFLAGS) -o [email protected]
Dans cet exemple, $ @ représente bonjour et $? ou $ @. cpp récupère tous les fichiers source modifiés.
Il existe deux autres macros spéciales utilisées dans les règles implicites. Ils sont -
$ <le nom du fichier associé qui a provoqué l'action.
$ * le préfixe partagé par les fichiers cibles et dépendants.
La règle implicite courante est pour la construction de fichiers .o (objets) à partir de .cpp (fichiers sources).
.cpp.o:
$(CC) $(CFLAGS) -c $<
Alternatively:
.cpp.o:
$(CC) $(CFLAGS) -c $*.c
Macros conventionnelles
Il existe différentes macros par défaut. Vous pouvez les voir en tapant "make -p" pour afficher les valeurs par défaut. La plupart sont assez évidents d'après les règles dans lesquelles ils sont utilisés.
Ces variables prédéfinies, c'est-à-dire les macros utilisées dans les règles implicites, se répartissent en deux classes. Ils sont les suivants -
Macros qui sont des noms de programmes (tels que CC)
Macros contenant des arguments des programmes (tels que CFLAGS).
Vous trouverez ci-dessous un tableau de certaines des variables courantes utilisées comme noms de programmes dans les règles intégrées de makefiles -
Sr. Non | Variables et description |
---|---|
1 | AR Programme de conservation des archives; la valeur par défaut est «ar». |
2 | AS Programme de compilation de fichiers d'assemblage; la valeur par défaut est «as». |
3 |
CC Programme de compilation de programmes C; la valeur par défaut est «cc». |
4 |
CO Programme d'extraction de fichiers de RCS; la valeur par défaut est «co». |
5 |
CXX Programme de compilation de programmes C ++; la valeur par défaut est «g ++». |
6 |
CPP Programme pour exécuter le préprocesseur C, avec des résultats sur la sortie standard; la valeur par défaut est «$ (CC) -E». |
sept |
FC Programme de compilation ou de prétraitement des programmes Fortran et Ratfor; la valeur par défaut est «f77». |
8 |
GET Programme pour extraire un fichier de SCCS; la valeur par défaut est «get». |
9 |
LEX Programme à utiliser pour transformer les grammaires Lex en code source; la valeur par défaut est «lex». |
dix |
YACC Programme à utiliser pour transformer les grammaires Yacc en code source; la valeur par défaut est «yacc». |
11 |
LINT Programme à utiliser pour exécuter lint sur le code source; la valeur par défaut est «lint». |
12 |
M2C Programme à utiliser pour compiler le code source de Modula-2; la valeur par défaut est «m2c». |
13 |
PC Programme de compilation de programmes Pascal; la valeur par défaut est «pc». |
14 |
MAKEINFO Programme pour convertir un fichier source Texinfo en un fichier Info; la valeur par défaut est «makeinfo». |
15 |
TEX Programme pour créer des fichiers TeX dvi à partir de la source TeX; la valeur par défaut est «tex». |
16 |
TEXI2DVI Programme pour créer des fichiers TeX dvi à partir de la source Texinfo; la valeur par défaut est «texi2dvi». |
17 |
WEAVE Programme pour traduire le Web en TeX; la valeur par défaut est «tissage». |
18 |
CWEAVE Programme pour traduire C Web en TeX; la valeur par défaut est «cweave». |
19 |
TANGLE Programme de traduction du Web en Pascal; la valeur par défaut est «enchevêtrement». |
20 |
CTANGLE Programme pour traduire C Web en C; la valeur par défaut est «ctangle». |
21 |
RM Commande pour supprimer un fichier; la valeur par défaut est «rm -f». |
Voici un tableau de variables dont les valeurs sont des arguments supplémentaires pour les programmes ci-dessus. Les valeurs par défaut pour tous ces éléments sont la chaîne vide, sauf indication contraire.
N ° Sr. | Variables et description |
---|---|
1 |
ARFLAGS Drapeaux pour donner le programme de maintenance des archives; la valeur par défaut est «rv». |
2 |
ASFLAGS Indicateurs supplémentaires à donner à l'assembleur lorsqu'il est explicitement appelé sur un fichier `.s 'ou` .S'. |
3 |
CFLAGS Drapeaux supplémentaires à donner au compilateur C. |
4 |
CXXFLAGS Drapeaux supplémentaires à donner au compilateur C. |
5 |
COFLAGS Drapeaux supplémentaires à donner au programme RCS co. |
6 |
CPPFLAGS Drapeaux supplémentaires à donner au préprocesseur C et aux programmes qui l'utilisent (comme les compilateurs C et Fortran). |
sept |
FFLAGS Drapeaux supplémentaires à donner au compilateur Fortran. |
8 |
GFLAGS Drapeaux supplémentaires à donner au programme get SCCS. |
9 |
LDFLAGS Des indicateurs supplémentaires à donner aux compilateurs lorsqu'ils sont censés invoquer l'éditeur de liens, `ld '. |
dix |
LFLAGS Drapeaux supplémentaires à donner à Lex. |
11 |
YFLAGS Drapeaux supplémentaires à donner à Yacc. |
12 |
PFLAGS Drapeaux supplémentaires à donner au compilateur Pascal. |
13 |
RFLAGS Drapeaux supplémentaires à donner au compilateur Fortran pour les programmes Ratfor. |
14 |
LINTFLAGS Drapeaux supplémentaires à donner aux peluches. |
NOTE - Vous pouvez annuler toutes les variables utilisées par les règles implicites avec l'option '-R' ou '--no-builtin-variables'.
Vous pouvez également définir des macros sur la ligne de commande comme indiqué ci-dessous -
make CPP = /home/courses/cop4530/spring02