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.