makefile文件详解

学向勤中得,萤窗万卷书。这篇文章主要讲述makefile文件详解相关的知识,希望能为你提供帮助。
1.1个规则

目标:依赖条件
命令(命令前有一个tab的缩进)


【makefile文件详解】终极目标一般写在第一行,不然make会把第一行当作终极目标,比如你的第一行是add.o:add.c,就会把它当成终极目标,只执行gcc -c add.c -o add.o就结束了,这时候只需要在开头加上all(All):a.out,或者在make的时候加上你的终极目标。
  • 如果想生成目标,检查规则中的依赖条件是否存在,如果不存在,则寻找是否有规则用来生成该依赖文件。
  • 检查规则中的目标是否需要更新,必须先检查它的所有依赖,依赖中有任意一个被更新,则目标必须更新。
2.2个函数
  • ?src=https://www.songbingjia.com/android/$(wildcard *.c)?找到当前目录下所有后缀为.c的文件,赋值给src
  • ?obj=$(patsubst %.c,%.o,$(src))?把src变量里所有后缀为.c的文件替换为.o,将参数3中,包含参数1的部分,替换为参数2

?clean没有依赖,rm前加-,作用是删除不存在文件时,不报错,顺序执行结束?
3.个自动变量
  • $@:在规则的命令中,表示规则中的目标
  • $^:表示规则的命令中,表示所有的依赖条件
  • $< :表示规则的命令当中,表示第一个依赖条件,如果将该变量应用在模式规则中,它将依赖条件列表
  • 依次取出,套用模式规则。

make clean -n可以查看你删的对不对


4.模式规则
%.o:%.c
      gcc -c $< -o %@
静态模式规则
$(obj)%.o:%.c
      gcc -c $< -o %
5.伪目标
.PHONY:clean ALL

当.c和.0及.h分别再src、obj、inc等目录下时

  • 一般命名 makefile 或者 Makefile,直接使用make命令
  • 如果命名为其他名字,可以使用make -f文件名-f:指定文件执行make命令

    推荐阅读