简介
makefile 原来是C语言作为工程化处理的一个实用工具,然后慢慢的迁移到其他平台上了,而在工作中看到的确也有使用 makefile 来集成一些命令的功用。
基本格式
target: prerequisities
[TAB]command
target就是你要执行的命令套件,prerequisties就是依赖,而command就是实际执行的命令,##必须注意:必须用TAB键来连接命令,如果使用了空格那么会报语法错误
例如:
ssh-dev:
ssh root@112.124.109.3
makefile 的解析过程
- 首先makefile会读取你的makefile文件.
- 读取指定的target.
- 解析后面的依赖是否更新
- 如果更新则执行command
- 没有则do nothing
注释
在makefile中,通常可以用"#"标识来作为注释
回声
make 运行这段脚本时会输出命令内容 ssh root@112.124.109.3
$ make ssh-dev
ssh root@112.124.109.3
root@112.124.109.3's password:
如果你不想让make打印出来,可以在首行加上"@"表示取消回声.
ssh-dev:
@ssh root@112.124.109.3
变量
声明
DIST_PATH=/root/ukee_admin_v3/dist
DEV_REMOTE_SERVER=root@112.124.109.3
使用
ssh-dev:
@ssh $(DEV_REMOTE_SERVER)
自动变量
$@ 指代当前构建的目标
a.js b.js:
touch $@
//等价于:
a.js b.js:
touch a.js b.js;
//也等价于:
a.js:
touch a.js;
b.js:
touch b.js
$(filter-out $@,$(MAKECMDGOALS)) 指代参数
make ssh-dev 123
# 那么 $(filter-out $@,$(MAKECMDGOALS)) 实际上等同于 123
解决隐含规则的冲突
.PHONY: ssh-dev