[笔记]makefile编写
作者:互联网
makefile的隐含规则默认处理第一个目标
函数:wildcard可以进行文本匹配
patsubst内容替换
变量:
$@代表目标
$^ 代表全部依赖
$< 第一个依赖
$? 第一个变化的依赖
@在规则前代表不输出给条规则指令
-在规则前代表该规则报错仍继续执行
实例:
SrcFiles=$(Wildcard *.c):定义宏SrcFiles,Wildcard函数匹配当前目录下所有后缀为.c的文件,SrcFiles内容为匹配结果
若当前目录下有这些文件,则这条语句等价于:
SrcFiles = access.c fock_fd.c lseek.c mmap.c orphan.c pipe_ps.c rename.c stat.c trancate.c wait.c filecount.c fork.c ls_ls.c openmax.c pipe.c read.c/ sigchildcatch.c text.c vfork.c
ObjFiles=$(patsubst %.c,%,$(SrcFiles)):定义宏ObjFiles,patsubst函数将宏SrcFiles中.c文件替换成去掉.c的字符,并赋值给ObjFiles。等价于:
ObjFiles=access filecount fock_fd fork lseek ls_ls mmap openmax orphan pipe pipe_ps read rename sigchildcatch stat text trancate vfork wait
app:$(ObjFiles):规则,格式:目标(app):依赖( $(ObjFiles):ObjFiles中的每一项)
%:%.c:规则
gcc $< -o $@ # -std=c99 -g:上一条规则的命令,$<代表目标,$@代表依赖的第一项,#代表其后的是注释
.PHONY:clean:.PHONY标注clean为伪目标
clean: :规则
标签:ObjFiles,makefile,笔记,pipe,ls,规则,编写,SrcFiles,patsubst 来源: https://www.cnblogs.com/qiu00/p/11552886.html