加快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,来作为示例。

相关推荐
2501_918126915 小时前
stm32核心板是什么属性?
linux·c语言·stm32·嵌入式硬件·个人开发
2501_9181269114 小时前
stm32能做次声波发射器吗?
linux·stm32·嵌入式硬件·学习·个人开发
2501_9181269114 小时前
stm32能做哪些程序?
linux·stm32·单片机·嵌入式硬件·个人开发
2501_9181269114 小时前
stm32程序是用什么语言写的?
c语言·stm32·单片机·嵌入式硬件·个人开发
丹牛Daniel1 天前
Java解决HV000183: Unable to initialize ‘javax.el.ExpressionFactory‘
java·开发语言·spring boot·tomcat·intellij-idea·个人开发
微风中的麦穗6 天前
【SQL Server 2019】企业级数据库系统—数据库SQL Server 2019保姆级详细图文下载安装完全指南
大数据·数据库·sqlserver·云计算·个人开发·运维必备·sqlserver2019
一条咸鱼_SaltyFish7 天前
觉照:被焦虑裹住脚踝时,我学会了觉察
成长·个人开发·感悟·心理
oIFnupWZw8 天前
微电网(两台)主从控制孤岛-并网平滑切换的分析。 分析了: 1.孤岛下VF控制 2.并网下PQ...
个人开发
加密狗复制模拟9 天前
逆向软件license授权文件
软件工程·个人开发
charlie11451419110 天前
SSH X11 转发排查与解决指南(Windows + Xming + Ubuntu)
arm开发·windows·笔记·ubuntu·ssh·个人开发·环境配置