• 让make自动推导

    让make自动推导

    GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个.o 文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。

    只要make看到一个 .o 文件,它就会自动的把 .c 文件加在依赖关系中,如果make找到一个whatever.o ,那么 whatever.c 就会是 whatever.o 的依赖文件。并且cc -c whatever.c 也会被推导出来,于是,我们的makefile再也不用写得这么复杂。我们的新makefile又出炉了。

    1. objects = main.o kbd.o command.o display.o \
    2. insert.o search.o files.o utils.o
    3.  
    4. edit : $(objects)
    5. cc -o edit $(objects)
    6.  
    7. main.o : defs.h
    8. kbd.o : defs.h command.h
    9. command.o : defs.h command.h
    10. display.o : defs.h buffer.h
    11. insert.o : defs.h buffer.h
    12. search.o : defs.h buffer.h
    13. files.o : defs.h buffer.h command.h
    14. utils.o : defs.h
    15.  
    16. .PHONY : clean
    17. clean :
    18. rm edit $(objects)

    这种方法,也就是make的“隐晦规则”。上面文件内容中, .PHONY 表示 clean 是个伪目标文件。

    关于更为详细的“隐晦规则”和“伪目标文件”,我会在后续给你一一道来。