Makefile 自动生成依赖关系

Makefile自动创建依赖关系对于提升编译效率和代码维护性至关重要。文章介绍了利用gcc -MM和sed命令生成依赖文件,通过正则表达式处理.o文件路径,以及include关键字的使用技巧,包括关闭警告信息、检查依赖文件时间戳和处理不存在的依赖文件。同时,提到了filter关键字的作用,makefile中命令执行的特性,以及解决依赖文件重复创建的问题。
摘要由CSDN通过智能技术生成

Makefile 自动生成依赖关系对实际工程应用中的编译效率和可维护性,起着不可替代的作用。
在学习自动生成依赖关系的过程中,总结方法及所注意的事项如下:

  1. 通过gcc -MM和sed命令产生所有的依赖文件
    通过gcc -MM 命令将所生成的依赖关系保存到指定的文件夹中,然后通过sed命令和正则表达式将所有的.o文件存放在指定的文件夹中。具体sed的操作如下:
    $(CC) -MM -E $(filter %.c, $^) | sed ‘s,(.).o[ :],objs/\1.o $@ : ,g’ > $@ 正则表达式 :‘s,(.).o[ :],objs/\1.o $@ : ,g’ 将目录下的.o文件存放到指定的objs目录下,并将依赖关系存放在相应的文件夹中。

  2. 通过include包含所有的依赖文件
    include关键字注意技巧之一:加上减号之后不仅关闭可警告信息还关闭了错误信息。
    include关键字注意技巧之二:当包含的文件存在时,make的时候首先检查该文件有没有作为目标存在,如果作为目标存在就再次检查目标的依赖文件的时间戳是否比较新,是就执行该规则否则不执行。
    include关键字注意技巧之三:当包含的文件不存在时,执行改文件名对应的规则,这时候会根据规则更新替换该文件的内容

  3. 使用filter关键字在编译的时候过滤不必要的.h文件。

  4. makefile规则中的每个命令是在每个新的进程来进行执行的,当前命令执行结束会结束该命令的进程,然后重新开启新的进程来执行新的命令。

  5. 如果想要得到连续多个命令的执行结果可采用‘;’将命令隔开。

  6. 当遇到一个.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值