• 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

  • 相关阅读:
    Codeforces 938G(cdq分治+可撤销并查集+线性基)
    codeforces 938F(dp+高维前缀和)
    寒武纪camp Day6
    寒武纪camp Day5
    寒武纪camp Day4
    bzoj4161 (k^2logn求线性递推式)
    loj10003加工生产调度
    loj10002喷水装置
    loj10001种树
    bzoj1023
  • 原文地址:https://www.cnblogs.com/everlose/p/12537445.html
Copyright © 2020-2023  润新知