全部学习汇总: GreyZhang/g_makefile: Learn makefile from all kinds of tutorials on the web. Happy hacking and let's find an common way so we may don't need to touch makefile code any more! (github.com)

                  Makefile中有几条遗憾的默认的常用规则:

  1. C语言源文件后缀名为.c,编译生成的目标文件后缀名为.o。
  2. CFLAGS用于控制编译时的编译参数。
  3. 对于依赖文件中的目标文件,如果没有写明规则make会进行自动推导。

基于以上原则,如果目标文件中有一个source.o的文件没有在makefile中写明规则,将会进行以下处理:

         $(CC) –c  source.c $(CPPFLAGS) $(CCFLAGS)

测试:

编写如下makefile:

1734_makefile学习小结_4_隐性规则自动推导_github

编译执行:

1734_makefile学习小结_4_隐性规则自动推导_目标文件_02

         通过以上例子可以看到,关于foo.o以及bar.o的生成规则makefile文件中并没有写明,但是通过make分析makefile进行编译的时候上述文件头得到了正常的编译。这边一隐性规则自动推导的一种表现。