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体中。

  • 相关阅读:
    ARC 117 D
    Maven依赖踩坑记录
    MobaXterm连接本地CentOS7
    Git在IDEA下的常用操作
    mq消息中间件
    nginx的作用
    Git的使用
    docker
    redis
    导出excel
  • 原文地址:https://www.cnblogs.com/hustdc/p/7081434.html
Copyright © 2011-2022 走看看