本篇是对阮一峰-Make 命令教程的学习与记录
基本规则
target必不可少
1 | <target1> : <前置条件(可选)> |
如
1 | clean: |
一个目标(target)就构成一条规则,执行make clean,则将执行该规则。
如果Make命令运行时没有指定目标,默认会执行Makefile文件的第一个目标,
如对于上面的makefile,make 就相当于 make clean
.PHONY的作用
如果当前目录中,正好有一个文件叫做clean,那么make clean命令将不会执行。因为Make发现clean文件已经存在,就认为没有必要重新构建,也就不会执行后面的命令
这时就需要使用.PHONY,明确声明clean是”伪目标”:
1 | .PHONY: clean |
声明clean是”伪目标”后,make就不会去检查是否存在一个叫做clean的文件,而是每次运行都执行对应的命令。
像.PHONY这样的内置目标名还有不少,可查看手册
前置条件(prerequisites)
具体命令
由一行或多行的Shell命令组成
每行命令之前必须有一个tab键。
如果想用其他键,可以用内置变量.RECIPEPREFIX声明。每行命令在一个单独的shell中执行,之间没有继承关系
具体语法
1.注释
2.回声(echoing)
3.通配符
4.模式匹配
5.变量和赋值符
6.内置变量(Implicit Variables)
Makefile.defs即Makefile定义的变量,一般会在Makefile头部引入…分开写清晰一些
LD_FLAGS=-ldflags “-X main.commit=$(git_commit)”
是把这个值,注入到main的__commit__变量里
7.自动变量(Automatic Variables)
8.判断和循环
9.自己写的函数
10.内置函数
strip
实战一下
1 |
|
进阶:
原文链接: https://dashen.tech/2016/01/30/Makefile书写小结/
版权声明: 转载请注明出处.