1.生成test可执行文件,源文件有prog.c prog.h cord.h
test:prog.o code.o
gcc -o test prog.o code.o
prog.o:prog.c prog.h code.h
gcc -c prog.c -o prog.o
code.o:code.c code.h
gcc -c code.c -o code.o
clean:
rm -f *.o
#最后是删除所有的.o文件
执行:$make target 或者 make test
2.带变量的makefile
OBJS=prog.o code.o
CC=gcc
test:${ OBJS }
${CC} -o test ${OBJS}
prog.o: prog.c prog.h code.h
${CC} -c prog.c -o prog.o
code.o:code.c code.h
&{CC} -c code.c -o code.o
clean:
rm -f *.o
makefile中还可以使用环境变量,同名变量会覆盖其环境变量
此外还有预定义变量和自动变量
预定义变量 | |
$@ | 当前目标文件的名字,如应用于创建库文件时,其值为库文件名 |
$? | 比当前目标文件新的依赖文件列表 |
$< | 比当前文件新的第一个依赖文件 |
$^ | 用空格隔开的所有依赖文件 |
则以上例子可以简化为
OBJS=prog.o code.o
CC=gcc
test:${OBJS}
${CC} -o $@ S^
prog.o:prog.c prog.h code.h
code.o:code.c code.h
clean:
rm -f *.o