Академический Документы
Профессиональный Документы
Культура Документы
Arash Bakhtiari
2012-11-20 Tue
Introduction
I
I
I
Make utility
Rules
A Rule :
I specifies when and how to remake certain files(targets)
I lists the other files that are the prerequisites of the target
(dependencies)
I commands to use to create or update the target
I Rule syntax:
targets : dependencies
command
DEMO
prog : prog . o a . o b . o c . o
g++ a . o b . o c . o p r o g . o o p r o g
a.o: a.c
b.o: b.c
c.o: c.c
g++ c g Wa ll o a . o a . c
g++ c g Wa ll o b . o b . c
g++ c g Wa ll o c . o c . c
prog . o : prog . c
g++ c g Wa ll o p r o g . o p r o g . c
Macros
I
CC = g++
CFLAGS = c Wa ll
I
DEMO
CC = g++
CFLAGS = c g Wa ll
SRCS = a . c b . c c . c p r o g . c
OBJS = a . o b . o c . o p r o g . o
p r o g : $ (OBJS)
$ (CC) $ (OBJS) o p r o g
a.o: a.c
$ (CC) $ ( CFLAGS ) o a . o a . c
b.o: b.c
$ (CC) $ ( CFLAGS ) o b . o b . c
c.o: c.c
$ (CC) $ ( CFLAGS ) o c . o c . c
prog . o : prog . c
$ (CC) $ ( CFLAGS ) o p r o g . o p r o g . c
Substitution References
I
$ ( v a r : a=b )
${ v a r : a=b}
I
SRCS = a . c b . c c . c p r o g 1 . c
OBJS = $ ( SRCS : . c =.o )
Inference Rules
I
.c.o:
DEMO
CC = g++
CFLAGS = c g Wa ll
SRCS = a . c b . c c . c p r o g . c
OBJS = $ ( SRCS : . c =.o )
p r o g : $ (OBJS)
$ (CC) $ (OBJS) o p r o g
.c.o:
clean :
rm r f ~ o d p r o g
DEMO
CC = g++
CFLAGS = c g Wa ll MMD
SRCS = a . c b . c c . c p r o g . c
OBJS = $ ( SRCS : . c =.o )
p r o g : $ (OBJS)
$ (CC) $ (OBJS) o p r o g
.c.o:
$ (CC) $ ( CFLAGS ) $<
clean :
rm r f ~ o d p r o g
i n c l u d e $ ( OBJS: % . o=%.d )
Parallel Compiling
make j [ j o b s ]