美文网首页
对makefile的简单理解

对makefile的简单理解

作者: 小胖_20c7 | 来源:发表于2019-06-17 15:59 被阅读0次
调用流程(shell --> make --> shell)
1 首先在shell中执行make,做为子进程的make继承了来自shell的坏境变量(并将环境变量下传给执行shell)
2 make本身也有自己的local变量表(不下传,且有缺省值)
3 当make的环境变量中有同名的local变量,local变量被覆盖(因为用的是环境变量,当然也可以下传了)
4 make实际上是一个解释器,它解释makefile脚本,执行内部操作以及产生新的shell来执行cmd
5 如果多个cmd写在一行,用【;】隔开,则代表这些指令是交给同一个shell来执行
基本执行流程
1 读入所有的makefile文件
2 读入被include的其他makefile文件
3 初始化文件中指定的变量(命令行变量 + 环境变量 + 缺省变量 + local变量,可以用origin函数来判断变量来源)
4 推导隐晦规则
5 分析所有规则
6 为所有目标生成依赖关系链(对于同名target,会进行依赖关系合并,通常后面的commands会覆盖前面的commands)
7 根据依赖关系,决定哪些目标要重新生成
8 执行生成的命令
make和shell之间的关系
1 正常情况下,makefile会逐行执行(每一行启动一个shell来执行)
2 每一行执行完毕后,makefile会测试shell的退出码
3 成功,继续下一行
4 失败,停止执行,退出目标(如果每一行首部加上"-",则忽略失败,继续执行)
makefile中的指令前缀
1 "@",不显示该行指令的回显(注意这个是makefile的语法,不是shell的语法)
2 "-",该行指令如果返回错误码,则makefile忽略对该行错误码的检验,继续执行(仅打出警告,-include = sinclude)
makefile中的目录
1 当前的工作目录
2 先决条件和目标的查找路径VPATH
shell和make中变量的区别
1 shell中变量的表示,${var}
2 make中变量的表示,$(var) or ${var}(${var}这种模式我查了手册,是支持的)
3 shell中的转义符,【\】
4 make中的转义符,【$】(所以 $$ = $)
5 make中变量的定义
    1 var = value(可以使用后面定义的变量)
    2 var := value(只能使用前面定义的变量)
关于include filename
1 先生成一个dummy filename文件(or 不生成)
2 根据某条隐式规则,生成真实的filename文件(这时候,文件被重新include,覆盖成功)
3 新的filename会有一些新的规则(通常和之前的某些隐式规则,具有同样的目标)
4 这时候,会进行规则合并(扩充了规则的适用性)
5 下次重新make的时候,会根据新的合并后的规则,来生成相应的目标文件
查看makefile中的变量
make -f sock.mak -f debug.mak d-PROJECT_NAME(我自己实现的一个脚本)
常用的命令行选项(具体查看man)
1 make -w
    即,Print the current directory
    这里的理解是,在每一行指令执行时(实际就是启动一个shell),打印出当前目录的相关信息(如果存在当前目录切换)
    Makefile中的make -f sock.mak,自动加上-w选项
2 make -d
    即,Print lots of debugging information
    用于调试makefile
3 make -n
    只显示命令,不执行命令
    用于调试makefile
4 make -j
    多线程执行makefile
5 make -r
    取消预定义的隐式规则

相关文章

  • 对makefile的简单理解

    调用流程(shell --> make --> shell) 基本执行流程 make和shell之间的关系 mak...

  • 我对Makefile的理解

    一、GNU make makefile是GNU make的配置文件, 常用的make参数如下: 二、makefil...

  • 理解Makefile

    Makefile是什么,make又是什么 建议看阮一峰老师的教程;链接:点我. 代码变成可执行文件,叫做编译(co...

  • Makefile 学习

    Makefile 一、Makefile 简单使用 Makefile是Linux系统下的一种编译脚本,更快、更方便的...

  • Makefile基础

    介绍 Wikipedia上的 Makefile介绍。简单来说:  Makefile就是告诉gcc/g++如何编译项...

  • Makefile笔记

    Makefile 笔记 一、简单的 Makefile 例子 文档目录结构文档目录结构是用户目录HOME下有src ...

  • Makefile的概念理解

    makefile是被make使用的“描述”文件,它描述要被make所管理的项目中的文件间的关系(比如对于一个C程序...

  • DPDK编程指南(翻译)( 三十二)

    32. DPDK 根目录 Makefile 理解 DPDK提供了一个根目录级别的Makefile,包含配置,构建,...

  • Makefile

    Makefile for boot Makefile Makefile对格式有要求:每一行文本除非顶头开始,如果需...

  • 简单的 makefile 文件

    Linux 系统下编译 C 文件往往用 make 工具。假定当前的项目目录下有 file.c、search.c、s...

网友评论

      本文标题:对makefile的简单理解

      本文链接:https://www.haomeiwen.com/subject/klbafctx.html