首页 > 其他分享 >makefile入门

makefile入门

时间:2023-01-06 20:00:31浏览次数:45  
标签:文件 依赖 入门 默认值 makefile clean 变量名

安装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>)
功能:查找中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合
模式,如果匹配的话,则以替换。
可以包括通配符%,表示任意长度的字串。如果
中也包含%,那么,中的这个%将是中的那个%
所代表的字串。(可以用\来转义,以\%来表示真实含义的%字符)
返回:函数返回被替换过后的字符串

六、伪文件
.PHONY:(文件名)
如上图中的
.PHONY:clean
作用:
上图中clean的作用是清除生成的.o文件,但如果前面没有定义clean为伪文件,而当前目录中有clean文件,则会提示当前已是最新而不执行清除.o文件的指令

标签:文件,依赖,入门,默认值,makefile,clean,变量名
From: https://www.cnblogs.com/fxdfn/p/17031490.html

相关文章