加快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 天前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
AI扶我青云志1 天前
IDE全家桶专用快捷键----------个人独家分享!!
个人开发
安大小万17 天前
Git的命令大全
大数据·git·elasticsearch·团队开发·个人开发
金孚媒1 个月前
金孚媒重磅推出德国顶级媒体原生广告整合服务,覆盖12家主流媒体
科技·个人开发·媒体
代码老y1 个月前
基于springboot的图书管理系统的设计与实现
java·vue.js·spring boot·后端·毕业设计·课程设计·个人开发
在线OJ的阿川1 个月前
【大模型学习】项目练习:视频文本生成器
人工智能·python·学习·自然语言处理·个人开发
ONLYOFFICE1 个月前
ONLYOFFICE文档API:编辑器的品牌定制化
编辑器·个人开发
代码老y1 个月前
基于springboot的校园商铺管理系统的设计与实现
java·vue.js·spring boot·后端·毕业设计·课程设计·个人开发
仙袂拂月1 个月前
C# Windows Forms应用程序-003
开发语言·c#·个人开发·学习方法·visual studio
奥利弗嗷1 个月前
SiteMap Generator:免费、快速、强大的在线网站地图生成工具
产品运营·软件工程·团队开发·个人开发