1.make的递归过程指的是:

    在Makefile中使用“make”作为一个命令来执行本身或者其它makefile文件的过程。

2.递归的意义:

    当前目录下存在一个“subdir”子目录,在这个子目录中有描述此目录编译规则的makefile文件,在执行make时需要从上层目录(当前目录)开始并完成它所有子目录的编   译。那么在当前目录下可以使用这样一个规则来实现对这个子目录的编译。

3.用法举例:

我们有一个子目录叫subdir,这个目录下有个Makefile文件,来指明了这个目录下文件的编译规则。那么我们总控的Makefile可以这样书写:

subsystem:
            cd subdir && $(MAKE)

其等价于:

subsystem:
            $(MAKE) -C subdir

对这两个规则的命令进行简单说明,规则中“$(MAKE)”是对变量“MAKE”的引用(变量“MAKE”的值指向make可执行文件,一般为/usr/bin/make)。第一个规则命令的意思是:进入子目录,然后在子目录下执行make。第二个规则使用了make的“-C”选项,同样是首先进入子目录而后再执行make。

第二个规则的命令意思即为“cd subdir && usr/bin/make”

这两个例子的意思都是先进入“subdir”目录,然后执行make命令。

我们把这个Makefile叫做“总控Makefile”,总控Makefile的变量可以传递到下级的Makefile中(如果你显示的声明),但是不会覆盖下层的Makefile中所定义的变量,除非指定了“-e”参数。

4.make递归时关于变量的传递

如果你要传递变量到下级Makefile中,那么你可以使用这样的声明:

export ;

如果你不想让某些变量传递到下级Makefile中,那么你可以这样声明:

unexport ;

如:
   
    示例一:

export variable = value

其等价于:

variable = value
        export variable

其等价于:

export variable := value

其等价于:

variable := value
        export variable

转载于:https://www.cnblogs.com/echo93/p/6252316.html

Makefile笔记之二------make的递归执行相关推荐

  1. Python数据结构与算法笔记(二):递归介绍及汉诺塔问题

    递归 内容介绍 func1和func2没有结束条件. 图解func递归过程: 长框代表func3,窄框代表print.函数执行过程是从上至下. 长框代表func4,窄框代表print.函数执行过程是从 ...

  2. 算法笔记(二)暴力递归回溯搜索

    文章目录 前缀树 贪心算法 有限时间完成最多次的会议 最省钱的切割金条方法 赚钱最多的项目安排方案 字典序比较方法 一个数据流中随时可以取得中位数 N皇后问题 位运算优化的N皇后问题 汉诺塔问题 打印 ...

  3. 汇编笔记之二——如何使用test执行jnz(或jz )

    测试条件 JZ   ZF=1  // JZ=jump if zero (结果为0则设置ZF零标志为1,跳转) JNZ  ZF=0  // JNZ=jump if not zero test属于逻辑运算 ...

  4. Windows APC学习笔记(二)—— 挂入过程执行过程

    Windows APC学习笔记(二)-- 挂入过程&执行过程 基础知识 挂入过程 KeInitializeApc ApcStateIndex KiInsertQueueApc Alertabl ...

  5. 多文件目录下makefile文件递归执行编译所有c文件 很不错

    下面是网上找到的,思路很不错,当然也无法满足所有的需求,我执行又修改了一套.解决了下面的方法存在的问题:每次编译都是全编译的问题,解决思路是.o文件需要跟编译的makefile文件同目录. 首先说说本 ...

  6. Flowable学习笔记(二、BPMN 2.0-基础 )

    转载自  Flowable学习笔记(二.BPMN 2.0-基础 ) 1.BPMN简介 业务流程模型和标记法(BPMN, Business Process Model and Notation)是一套图 ...

  7. 【Java编程思想】读书笔记(二)第六章---第十章

    Java编程思想(第四版)学习笔记 第六章---第十章 第六章:访问权限控制 6.2Java访问权限修饰词 第七章:复用类 7.1 组合语法 7.2 继承语法(extends) 7.4.2名称屏蔽(重 ...

  8. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  9. 编译原理笔记(二)之词法分析

    编译原理笔记(二)之词法分析 1. 词法分析中的若干问题 1.1 基本概念 1.2 记号的属性 1.3 词法分析器的作用与工作方式 1.4 输入缓冲区 2. 模式的形式化描述 2.1 字符串与语言 2 ...

最新文章

  1. Python中printf函数中逗号引发的区别
  2. 编写微信小程序常用到的界面参数
  3. sql server 2008 64位连接sql 2000服务器出错解决办法
  4. 怎么让热图显示基因名_R 生信数据可视化 01 | 聚类热图
  5. [BUUCTF-pwn]——[ZJCTF 2019]EasyHeap
  6. 老男孩教育参观云计算公司
  7. 学习LD_PRELOAD之摘抄
  8. Struts2 拦截器: 拦截器与过滤器区别
  9. SQL Server执行计划那些事儿(3)——书签查找
  10. 利用CVE-2019-1040 - 结合RCE和Domain Admin的中继漏洞
  11. Linux钩子拦截删除文件,在Linux中保存钩子文件
  12. 华为Mate 40 Pro屏幕贴膜曝光:双孔曲面屏实锤?
  13. 开课吧Java课堂:如何使用isAlive()和join()
  14. xp的guest访问
  15. linux mysql 管理员,Linux管理员-CentOS 7上的MySQL设置
  16. 保存的离线网页总是自动跳转
  17. 在Xperia XZ上刷入AOSP
  18. 计算机的进制的转换公式,计算机进制转换公式
  19. 微信公众号接入自己的客服系统,自定义客服系统
  20. 【生活中的逻辑谬误】以泪掩过和以笑饰非

热门文章

  1. request获取网页单选框的值
  2. Android中Gallery和ImageSwitcher的使用
  3. TrueNorth:IBM的百万神经元类人脑芯片
  4. 算法入门书籍--算法图解
  5. rabitMQ优缺点
  6. linux命令date
  7. 你什么时候觉得自己会被边缘化?
  8. 网络管理的5大功能!
  9. linux中的fork函数详解
  10. 数据结构:回溯--解决八皇后问题