安装make
sudo apt install make
命令行指令
make
在当前目录自动寻找makefile或Makefile文件
规则:
一、一个makefile可有多个规则
规则的格式:
目标...:依赖...
命令(Shell命令)
目标:最终要生成的文件
依赖:生成目标所需要的文件
命令:通过执行命令对依赖操作生成目标文件
上图中,app为目标,sub.c后面都是依赖
第二行是要执行的shell命令
二、语法
1.自定义变量
变量名=变量值
如
var=hello
$(var)
$(var)得到的值是hello
2.预定义变量
AR:归档维护程序的名称,默认值为 ar
CC: C 编译器的名称,默认值为 cc
CXX: C++ 编译器的名称,默认值为 g++
$@: 目标(文件)的完整名称
$<: 第一个依赖文件的名称
$^ : 所有的依赖文件
3.获取变量名
$(变量名)
src和target是自定义的变量名
三、除了第一条规矩,其他规矩都是为第一条服务
第一条规矩中,当没有找到依赖中的文件,如sub.o,则会往下面的规矩寻找那条可以生成sub.o的规则
四、模式匹配
%.o:%.c
%:匹配符,匹配一个字符串
两个%匹配的是同一个字符串
五、常用
1.$(wildcard PATTERN)
功能:获取指定目录下指定类型的文件列表
参数:PATTERN 指的是某个或多个目录下的对应的某种类型的文件,如果有多
个目录,一般使用空格间隔
返回:得到的若干个文件的文件列表,文件名之间使用空格间隔
2.$(patsubst <pattern>,<replacement>,<text>)
功能:查找
模式
%
,表示任意长度的字串。如果
中也包含%
,那么,%
将是
所代表的字串。(可以用\
来转义,以\%
来表示真实含义的%
字符)
返回:函数返回被替换过后的字符串
六、伪文件
.PHONY:(文件名)
如上图中的
.PHONY:clean
作用:
上图中clean的作用是清除生成的.o文件,但如果前面没有定义clean为伪文件,而当前目录中有clean文件,则会提示当前已是最新而不执行清除.o文件的指令