加快make编译速度的另一种方法

开始之前,先供上大佬的加快编译速度的方法:
转载

上述方法中,个人感觉,普通人能用的,估计就加上-j参数了。

不过在我的项目中,我发现了另一种大佬没有提的方法,那就是在makefile中,为每个c文件指定好INCLUDE_PATH变量,然后在编译每个c文件时,只让make去该文件的INCLUDE_PATH中取找头文件,经过实际测试,使用这种方法编译,可以将编译时间从30分钟下降到8分钟,效果杠杆的。

我的项目是一个汽车域控制器的项目,大约有400多个c文件需要编译。在优化makefile之前,指定头文件查找路径的方式就是使用一个INCLUDE_PATH变量,将所有头文件的路径全部添加到这个变量中,然后make在编译每一个c文件时,都会在这个庞大的路径集合中取找当前c文件中包含的每个头文件,变量INCLUDE_PATH中的路径大约有上百个,一个c文件中包含的头文件,少则几个,多则几十个,这样找头文件找起来自然是很费时间的。

想到这一点后,我们对makefile进行了优化,事先生成每个c文件包含的头文件的的路径,这个路径是gcc生成的,是绝对最简化的,没有任何多余的路径。然后在编译每个c文件时,将对应的头文件路径文件包含进来,只让make在这些几个路径中找头文件。

后续有时间补充一个示例makefile,来作为示例。

相关推荐
嵌入式-老费1 天前
Android开发(题外话之虚拟机卡顿)
个人开发
一条咸鱼_SaltyFish2 天前
远程鉴权中心设计:HTTP 与 gRPC 的技术决策与实践
开发语言·网络·网络协议·程序人生·http·开源软件·个人开发
艺杯羹4 天前
Trae vs. 传统AI编程工具:谁更适合你的开发场景?——深度对比与实战指南
团队开发·个人开发·ai编程·技术选型·开发效率·ai编程工具
灏瀚星空5 天前
基于 Python 与 GitHub,打造个人专属本地化思维导图工具全流程方案(上)
开发语言·人工智能·经验分享·笔记·python·个人开发·visual studio
玉梅小洋6 天前
《游戏设计艺术(第三版)》第一章——锚定设计初心:成为游戏设计师的起点
笔记·游戏·个人开发·游戏策划
艺杯羹6 天前
从“被动建议”到“主动执行”:Trae如何重新定义AI编程?
ai·团队开发·个人开发·ai编程·trae
Mr -老鬼7 天前
移动端跨平台框架的选型指南
经验分享·移动开发·框架·团队开发·个人开发·跨平台
微风中的麦穗8 天前
【VMware 17 Pro】虚拟化工具——VMware 17 Pro 详细图文完全指南:专业虚拟化平台的终极解决方案
个人开发·vmware·虚拟化·虚拟机·运维必备·虚拟化平台·vmware17
进阶的小名8 天前
[超轻量级延时队列(MQ)] Redis 不只是缓存:我用 Redis Stream 实现了一个延时MQ(自定义注解方式)
java·数据库·spring boot·redis·缓存·消息队列·个人开发
2501_918126918 天前
国标麻将一抽胡
前端·学习·html·个人开发