实例介绍
【实例简介】
make是如何工作的
在默认的方式下,也就是我们只输入 make 命令。那么,
1、make 会在当前目录下找名字叫“Makefile”或“makefile”的文件。
2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。
3、如果 edit 文件不存在,或是 edit 所依赖的后面的 .o 文件的文件修改时间要比 edit这个文件新,那么,他就会执行后面所定义的命令来生成 edit 这个文件。
4、如果 edit 所依赖的.o 文件也存在,那么 make 会在当前文件中找目标为.o 文件的依赖性,如果找到则再根据那一个规则生成.o 文件。(这有点像一个堆栈的过程)
5、当然,你的 C 文件和 H 文件是存在的啦,于是 make 会生成 .o 文件,然后再用 .o 文件生命 make 的终极任务,也就是执行文件 edit 了。 这就是整个 make 的依赖性,make 会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make 就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make 根本不理。make 只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦
通过上述分析,我们知道,像 clean 这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示要 make 执行。即命令——“make clean”,以此来清除所有的目标文件,以便重编译
【实例截图】【核心代码】
目录 综述 6 make是如何工作的 6 makefile中使用变量 7 让make自动推导 7 清空目标文件的规则 8 Makefile里有什么? 9 1、 显式规则。 9 2、隐晦规则。 9 3、变量的定义。 9 4、文件指示。 9 5、注释。 9 Makefile的文件名 9 引用其它的Makefile 10 环境变量 MAKEFILES 10 make的工作方式 11 1、读入所有的 Makefile。 11 2、读入被 include 的其它 Makefile。 11 3、初始化文件中的变量。 11 4、推导隐晦规则,并分析所有规则。 11 5、为所有的目标文件创建依赖关系链。 11 6、根据依赖关系,决定哪些目标要重新生成。 11 7、执行生成命令。 11 书写规则 11 规则举例 11 c -c -g foo.c 11 规则 12 在规则中使用通配符 12 文件搜寻 13 1、 vpath <pattern> <directories> 13 2、 vpath <pattern> 14 3、 vpath 14 伪目标 14 多目标 15 静态模式 16 自动生成依赖性 17 书写命令 17 显示命令 17 命令执行 18 命令出错 18 嵌套执行make 19 定义命令包 21 使用变量 21 变量的基础 22 变量中的变量 22 x := foo 23 y := $(x) bar 23 x := later 23 y := foo bar 23 x := later 23 变量高级用法 24 第一种是变量值的替换。我们可以替换变量中的共有的部分,其格式是 24 第二种高级用法是——“把变量的值再当成变量”。 追加变量值 26 verride 指示符 26 多行变量 27 环境变量 27 目标变量 27 模式变量 28 使用条件判断 29 语法 29 第一个是我们前面所见过的“ifeq” 29 第二个条件关键字是“ifneq”。语法是: 29 第三个条件关键字是“ifdef”。语法是: 30 第四个条件关键字是“ifndef”。其语法是: 30 使用函数 31 函数的调用语法 31 ….一堆函数 31 自动化变量 32
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论