13.6 Make
Riferimenti per Make:
Semplici variabili automatiche:
Regole di sintassi:
target: [ prerequisites ... ]
[TAB] command1
[TAB] -command2 # ignora gli errori
[TAB] @command3 # sopprime l'eco
Qui [TAB] � un codice TAB. Ogni riga viene interpretata dalla
shell dopo la sostituzione della variabile da parte di make. Usate
\ alla fine della riga per continuare a capo lo script. Usate
$$ per $ per le variabili d'ambiente dello shell
script.
Le regole implicite per target e
prerequisites pu� essere scritta, per esempio come:
%: %.c header.h
oppure,
%.o: %.c header.h
Qui, target contiene il carattere % (esattamente uno di
loro). Il % pu� corrispondere con qualsiasi sottostringa non
vuota nei file target attuali. Similmente prerequisites usa
% come i loro nomi si correlano al nome del target attuale.
Le regole di suffisso sono il vecchio modo di
definire le regole implicite per make
. Sono ancora supportate in
GNU make
per compatibilit�, ma usate quando possibile le regole
equivalenti del modello:
vecchia regola --> nuova regola
.c: --> % : %.c
.c.o: --> %.o: %.c
Variabili automatiche per le summenzionate regole:
foo.o: new1.c new2.c old1.c new3.c
$@ == foo.o (obiettivo)
$< == new1.c (il primo)
$? == new1.c new2.c new3.c (i pi� recenti)
$^ == new1.c new2.c.c old1.c new3.c (tutti)
$* == `%' motivo corrispondente al motivo obiettivo.
Riferimenti delle variabili:
foo1 := bar # Espansione unica
foo2 = bar # Espansione ricorsiva
foo3 += bar # Appendi
SRCS := $(wildcard *.c)
OBJS := $(foo:c=o)
OBJS := $(foo:%.c=%.o)
OBJS := $(patsubst %.c,%.o,$(foo))
DIRS = $(dir directory/filename.ext) # Estrae la "directory"
$(notdir NAMES...), $(basename NAMES...), $(suffix NAMES...) ...
Per vedere le regole interne automatiche, lanciate make -p
-f/dev/null.