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

  • 相关阅读:
    Map
    input输入框文字提示IE兼容
    Linux下实现获取远程机器文件
    ssl_error_rx_record_too_long
    Linux下访问网站
    Linux安装Jdk1.7
    bootstrap左右圆角按钮-适配手机页面
    jQuery使用load方法加载其他文档内容
    Js操作DOM小练习_01
    BootstrapValidator验证表单用法
  • 原文地址:https://www.cnblogs.com/hustdc/p/7081434.html
Copyright © 2020-2023  润新知