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体中。
make运行阶段划分的更多相关文章
- [LeetCode] Partition List 划分链表
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- SWMM模型子汇水区划分的几种方法
子汇水区的划分是SWMM模型建模的主要步骤之一,划分的好坏对结果精度有比较大的影响.概括来讲,子汇水区的划分有以下几种思路: (1)根据管网走向.建筑物和街道分布,直接人工划分子汇水区.这个方法适用于 ...
- 等价类划分方法的应用(jsp)
[问题描述] 在三个文本框中输入字符串,要求均为1到6个英文字符或数字,按submit提交. [划分等价类] 条件1: 字符合法; 条件2: 输入1长度合法; 条件3: 输入2长度合法: 条件4: 输 ...
- Java上等价类划分测试的实现
利用JavaFx实现对有效等价类和无效等价类的划分: 代码: import javafx.application.Application;import javafx.event.ActionEvent ...
- ENode框架Conference案例分析系列之 - 上下文划分和领域建模
前面一片文章,我介绍了Conference案例的核心业务,为了方便后面的分析,我这里再列一下: 业务描述 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的 ...
- Cesium原理篇:2最长的一帧之网格划分
上一篇我们从宏观上介绍了Cesium的渲染过程,本章延续上一章的内容,详细介绍一下Cesium网格划分的一些细节,包括如下几个方面: 流程 Tile四叉树的构建 LOD 流程 首先,通过上篇的类关系描 ...
- 两种交换机配置模式,以配置基于端口划分的VLAN为例
关于交换机的配置模式,大体上可以分为两类:其一以CISCO交换机为代表的配置模式,其二以Huawei.H3C交换机为代表的配置模式.其实这两种配置模式并没有本质的不同,只是配置的命令名称和配置方式存在 ...
- tyvj1194 划分大理石
描述 有价值分别为1..6的大理石各a[1..6]块,现要将它们分成两部分,使得两部分价值之和相等,问是否可以实现.其中大理石的总数不超过20000. 输入格式 有多组数据!所以可能有多行如果有0 ...
- tyvj1102 单词的划分
描述 有一个很长的由小写字母组成字符串.为了便于对这个字符串进行分析,需要将它划分成若干个部分,每个部分称为一个单词.出于减少分析量的目的,我们希望划分出的单词数越少越好.你就是来完成这一划分工作的. ...
随机推荐
- Python之队列
Python之队列 队列:先进先出 队列与线程有关. 在多线程编程时,会起到作用. 作用:确保信息安全的进行交换. 有get 和 put 方法. ''' 创建一个“队列”对象 import Queue ...
- Linux文本检索命令grep笔记
grep是在linux系统中基于行文本非常实用检索工具,通过该命令可以将匹配到的结果信息输出到终端控制台. 语法格式:grep [-ivnc] '需要匹配的内容' 文件名 常用参数说明: -i 检索的 ...
- python 学习总结1
计算机与程序设计 一.计算机的概念 1.计算机是根据指令操作数据的设备. 2.计算机主要包括两个功能性一个是功能性另一个是计算性 功能性是对数据的操作,表现为数据计算,输入输出处理和结果存储 可编程性 ...
- 负载均衡之Ocelot+Consul(配置文件注册服务)
继上篇 Ocellot 做负载均衡之后,本篇将记录 Ocelot + Consul 试验如何做服务发现和服务注册. 服务发现和服务注册的背景知识,一搜满街都是. 在此,我还是写下自己对这个术语的理解吧 ...
- 【02】koala编译中文出错(已放弃不用)
http://koala-app.com/index-zh.html koala 下载地址. sass.中文编译出错: 打开 Koala文件夹位置->rubygems->gems- ...
- 有上下界的网络流 loj115 loj116 loj 117
参考文章 无源汇有上下界的可行流 有源汇有上下界的最大流 有源汇有上下界的最小流 无源汇有上下界可行流 以 loj115 为例. 剥离出必要边与自由边. #include <iostream&g ...
- 【BFS+优先级队列】Rescue
https://www.bnuoj.com/v3/contest_show.php?cid=9154#problem/I [题意] 给定一个n*m的迷宫,A的多个小伙伴R要去营救A,问需要时间最少的小 ...
- Flask处理前端POST过来的JSON数据
POST JSON数据的JS代码: $.ajax({ url:'http://127.0.0.1:5000/calc', type : 'post', dataType:'json', headers ...
- HH的项链(codevs 2307)
题目描述 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此,他的 ...
- CodeForces - 750D New Year and Fireworks
因为 烟花的最大范围是各个方向150格 所以 最大的空间应该是 300*300 BFS和DFS均可 模拟每一个烟花爆炸的过程 但是要注意 需要一个数组来排重 在某一个爆炸点 如果爆炸的方向 和爆炸的层 ...