1.例如,
.PHONY : clean
clean :
-rm edit $(objects)
.PHONY意思表示clean是一个“伪目标”
2.在rm命令前面加了一个小减号的意思就是,也许某些文件出现问题,但不要管,继续做后面的事。
3.
$@表示目标文件,(因为@很像靶子,target)
$<表示依赖文件
4.静态模式
objects = foo.o bar.o
all: $(objects)
$(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
解释:%.o表示$(objects)中所有.o文件,%.c表示所有.o文件去掉后缀,然后加上.c后缀
5.gcc产生依赖关系文件,“-MM”的选项,注意“-M”选项会把系统目录的依赖文件也列出来
cc -MM main.c
其输出是:
main.o : main.c defs.h
6.
$(sources:.c=.d)”中的“.c=.d”的意思是做一个替换,把变量$(sources)所有[.c]的字串都替换成[.d]
7.
make –C XX 意思为到XX目录下寻找Makefile