Makefile文件的组成
a. 需要生成的目标文件(target file)
b. 生成目标文件所需要的依赖文件 (dependency file)
c. 生成目标文件的编译规则命令行 (command)
Makefile规定在书写command命令行前必须加一个键。
变量
$(变量名)
-
通过“=”来实现
前面的变量可以通过后面的变量来定义 -
通过“:=”来实现
按顺序定义,前面的变量不能通过后面的变量来定义 -
通过“+=”来实现
可以实现给变量追加值。 -
通过“?=”来实现
这种方式下变量a1的值是a.o 而不是b.o 也就是说,如果变量a1已经在前面定义过了,那么后面的定义就无效了
以上所介绍的变量都是全局变量,也就是说在整个Makefile文件中都可以访问的 -
增加了支持甘特图的mermaid语法1 功能;
-
增加了 多屏幕编辑 Markdown文章功能;
-
增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
-
增加了 检查列表 功能。
自动推导
自动推导功能默认每一个目标文件都有一个与之对应的依赖文件。这就无需再指定与目标文件对应的依赖文件名了。此外,自动推导功能还能推导出与目标文件对应的基本编译规则命令。
伪目标
伪目标不是真正的目标文件,所以通过伪目标可以让Make工程管理器只执行规则命令,而不用创建实际的目标文件。
由于伪目标不是真正的目标文件,只是一个符号。为了不和真实的目标文件混淆,最好使用“.PHONY”对伪目标进行标识。
文件查找
程序的源文件都根据功能的不同放置在不同的子目录中。
- VPATH
VPATH是一个特殊变量,Make在当前路径找不到源文件时
使用方法为
Make会在当前路径找不到文件时按照顺序依次查找/a 和/b 目录 - vpath
vpath并不是变量而是关键字,其作用和VPATH类似,但使用方式更加灵活。
Make会在当前路径找不到源文件时先查找/a目录下的C文件,然后查找/b目录下的头文件。
嵌套执行
如果把所有源文件的编译规则命令都写在一个Makefile中,会造成Makefile过于臃肿,因此需要把Makefile分解成多个子Makefile
使用方法为:
条件判断
在运行时对条件进行判断,然后进入条件分支继续编译
条件表达式有以下四种格式
- ifeq(参数1,参数2)。作用:比较参数1和参数2的值是否相同, 相同为真,相异为假。
- ifneq(参数1,参数2)。作用:比较参数1和参数2的值是否相同,相异为真,相同为假。
- ifdef(参数)。作用:参数非空为真,空为假。
- ifndef(参数)。作用:参数空为真,非空为假。
函数
函数也用符号$ 进行标识,其使用格式为
常用的基本函数:
(1)subst
(2) patsubst 格式为
(3)wildcard 格式为
(4)strip 参数 格式为
(5) findstring
(6)filter
功能:从参数1中筛选出符合模式参数的字符串。返回值:符合参数模式的字符串
(7) addsuffix 格式为
(8) addprefix 格式为
(9) foreach 格式为
(10) call 格式为
(11) if 格式为
(12) dir 格式为
(13) error 格式为