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