makefile
makefile 文件 ===> 文件名:makefile 或者 Makefile
1、makefile的规则
书写规则:
目标文件:依赖文件
(一个tab键) 命令
命令前面的tab键不能用空格代替
目标文件 最终要生生成的文件
依赖文件 为了生成目标文件需要的文件
命令 通过依赖文件生成目标文件的方法
运行:执行 make 命令,执行命令的时候可以加 “-n”,代表不真正执行命令,只是预览要执行的命令
伪目标的写法:
目标:(空的)
命令
伪目标不会生成目标文件,执行 :make 名字 执行相应命令
常用:
clean 清除相关文件
all/ALL 最终要生成的目标,不要写命令
clean的命令前可以加‘-’,目的:当删除某些文件失败的时候,可以让命令继续执行下去
执行规则:
1、如果目标文件的时间早于依赖文件,则重新生成目标文件
2、如果依赖文件不存在,则会去找相应的规则生成依赖文件
2、函数
makefile中变量不需要类型,例如:src=abc
取变量的值用 $(变量) ===> $(src) ===> abc
wildcard $(wildcard *.c) 匹配当前目录下所有.c 文件
patsubst $(patsubst %.c, %.o , $(src))
src = $(wildcard *.c) ==> src = main.c add.c mul.c sub.c
obj= $(patsubst %.c, %.o , $(src)) ==> obj = main.o add.o mul.o sub.o
3、自动变量
$(@) 代表规则中的目标文件
$(^) 代表规则中的所有依赖文件
$(<) 代表规则中的第一个依赖文件
模式匹配:
%.o:%.c
注意:
伪目标最好写在.PHONY后面声明一下,否则如果当前文件夹下存在和伪目标相同的文件,则伪目标将失效