makefile 使用介绍

简介

makefile 原来是C语言作为工程化处理的一个实用工具,然后慢慢的迁移到其他平台上了,而在工作中看到的确也有使用 makefile 来集成一些命令的功用。

基本格式

target: prerequisities
[TAB]command

target就是你要执行的命令套件,prerequisties就是依赖,而command就是实际执行的命令,##必须注意:必须用TAB键来连接命令,如果使用了空格那么会报语法错误

例如:

ssh-dev: 
    ssh root@112.124.109.3

makefile 的解析过程

  1. 首先makefile会读取你的makefile文件.
  2. 读取指定的target.
  3. 解析后面的依赖是否更新
  4. 如果更新则执行command
  5. 没有则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

参考

前端入门->makefile

原文地址:https://www.cnblogs.com/everlose/p/12537445.html