makefile 使用介绍

Posted everlose

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于makefile 使用介绍的主要内容,如果未能解决你的问题,请参考以下文章

Makefile

使用带有 NMake 样式 Makefile 的 clang-cl 无法回显

Linux Kernel Makefiles介绍

Linux系统-Makefile规则介绍基本使用

makefile 使用介绍

Linux篇第四篇——Linux环境下的工具(make/Makefile+进度条小程序)