$@ 表示目标文件
    $^ 表示所有的依赖文件
    $< 表示第一个依赖文件
    $? 表示比目标还要新的依赖文件列表
    %.o:表示所用的.o文件
    %.c:表示所有的.c文件
    ==============================================================
    例, Makefile:

    1. objs := a.o b.o
    2. test:$(objs)
    3. gcc -o test $^
    4. # .a.o.d .b.o.d
    5. dep_files := $(foreach f,$(objs), .$(f).d)
    6. dep_files := $(wildcard $(dep_files))
    7. ifneq ($(dep_files),)
    8. include $(dep_files)
    9. endif
    10. %.o : %.c
    11. gcc -Wp,-MD,.$@.d -c -o $@ $<
    12. clean:
    13. rm *.o test