zoukankan      html  css  js  c++  java
  • make运行阶段划分

    1 make执行分为两个阶段

    第一个阶段:读makefile并且建树阶段

    第二个阶段:构建目标阶段

    2 扩展的立即和推迟

    在第一个阶段的扩展是立即,在第二个阶段或者在需要的时候再扩展是推迟,这里的需要的时候不光是第二个阶段,也可能在第一个阶段,比如在条件判断里面用了推迟扩展的变量,那么还是会立即扩展的。

    3 立即扩展的场景

    扩展的不光包括变量的扩展,也包括函数的执行的扩展。

    3.1 ":="形式的赋值是立即扩展

    3.2 规则的目标和依赖都是立即扩展的

    3.3 +=

    如果前面是立即扩展的变量,那么它也是立即扩展的。

    3.4 条件判断中的变量是立即的

    条件语句是在读取makefile的阶段进行处理的,即第一个阶段处理的。所以,条件判断中的变量是立即扩展的。

    4 推迟扩展的场景

    4.1 “=”

    4.2 规则的命令是推出扩展的

    也就是说,直到命令被触发执行的时候才进行扩展。

    4.3 +=

    如果前面的变量是推迟扩展的,那么它也是推迟扩展的。

    4.4 自动变量是推迟扩展的

    自动变量直到规则的命令执行的时候才会扩展。

    4.5

    5 关于函数扩展的时机

    函数的执行也是立即进行的,在读取makefile的时候就会执行,除了在等号的右边,在命令中,或者在define体中。

  • 相关阅读:
    put 创建索引
    post创建一个空索引
    elasticsearch 安装marvel
    elasticsearch 安装bigdesk插件
    perl 播放windows文件
    如何在十分钟内插入1亿条记录到Oracle数据库?
    常见地址说明
    如何做出实用而强大的数据地图?
    如何利用jqGrid表格方法重新设置caption属性值
    如何给jqGrid表格按照字段进行分组
  • 原文地址:https://www.cnblogs.com/hustdc/p/7081434.html
Copyright © 2011-2022 走看看