摘要:
1.疯狂想法的具体实现 注意事项: 当.dep文件生成后,如果动态的改变头文件间的依赖关系,那么make可能无法检测到这个改变,进而做出错误的编译决策。 解决方案: 将依赖文件名作为目标加入自动生成的依赖关系中 通过include加载依赖文件时判断是否执行规则 在规则执行时重新生成依赖关系文件 最后 阅读全文
摘要:
1. 问题引入———如何在makefile中组织.dep文件到指定目录? 解决思路: 当include发现.dep文件不存在时: 1)通过规则和命令创建deps文件夹2)将所有.dep文件创建到deps文件夹3).dep文件中记录目标文件的依赖关系 初步代码设计: 编程实验:makefile.1 运 阅读全文
摘要:
1. makefile中的include关键字 类似C语言中的include 将其他文件的内容原封不动地搬入当前文件 类似C语言中的include 将其他文件的内容原封不动地搬入当前文件 make对include关键字的处理方式:在当前目录搜索或指定目录搜索目标文件: 1)搜索成功:将文件内容搬入当 阅读全文
摘要:
1. 值得思考的问题 (1)目标文件(.o)是否只依赖于源文件(.c)? 源文件和头文件 (2)编译器如何编译源文件和头文件? 2. 编译行为带来的缺陷 (1)预处理器将头文件中的代码直接插入源文件 (2)编译器只通过预处理后的源文件产生目标文件 综合上面两点,规则中只以源文件为依赖,命令可能无法执 阅读全文
摘要:
1. 实战需求 (1)自动生成 target 文件夹存放可执行文件 (2)自动生成 objs 文件夹存放编译生成的目标文件(*.o) (3)支持调试版本的编译选项,支持打印调试信息 (4)考虑代码的扩展性 ————> 使用变量 2. 工具原料:两个预定义的函数 — $(wildcard _patte 阅读全文
摘要:
1. makefile中的函数 (1)make 解释器提供了一系列的函数供makefile 调用 (预定义函数/库函数) (2)在 makefile 中支持自定义函数实现,并调用执行(自定义函数) (3)通过 define 关键字实现自定义函数 2. 在 makefile 中自定义函数 2.1 自定 阅读全文