zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Java MyBatis 插入数据库返回主键
    FISCO-BCOS平台共识
    分布式一致性协议介绍(Paxos、Raft)
    分布式问题分析
    分布式基础知识
    比特币编译(Ubuntu 16.04)
    比特币源代码分析(1)
    c++中的多线程
    剑指offer中数据结构与算法部分学习
    基础的语法知识汇总
  • 原文地址:https://www.cnblogs.com/everlose/p/12537445.html
Copyright © 2011-2022 走看看