Makefile 如何提高生成文件的速度? 我在Fortran中用两个文件构建C++和CUDA中的多个二进制文件。我发现了一个类似的问题。最近,一位用户要求我重新构建一个三年前版本的存储库(在我们执行大规模迁移和重命名之前),我震惊地看到它构建得如此之快。要准确确定该版本和现在之间的哪些更改导致构建耗时如此之长,这将是不可能的/难以置信的耗时
然而,我在回答上述问题时注意到: 特别是,请记住使用:=而不是=,因为:=进行扩展 立即,这节省了时间杰克·凯利3月23日22:38 还有其他我应该知道的建议吗 注:Makefile 如何提高生成文件的速度? 我在Fortran中用两个文件构建C++和CUDA中的多个二进制文件。我发现了一个类似的问题。最近,一位用户要求我重新构建一个三年前版本的存储库(在我们执行大规模迁移和重命名之前),我震惊地看到它构建得如此之快。要准确确定该版本和现在之间的哪些更改导致构建耗时如此之长,这将是不可能的/难以置信的耗时,makefile,performance,Makefile,Performance,然而,我在回答上述问题时注意到: 特别是,请记住使用:=而不是=,因为:=进行扩展 立即,这节省了时间杰克·凯利3月23日22:38 还有其他我应该知道的建议吗 注: 我使用“include”范例,其中我要构建的每个目录都有一个module.mk文件,该文件直接包含在唯一的Makefile中 我确实使用了以下几种功能: (降价…) 更新2:根据@Beta的建议,我能够完成依赖项生成,生成文件的时间大约占总编译时间的14.2%。所以我将集中精力在我的C++代码中最小化头包含。谢谢你们两位的建议
- 我使用“include”范例,其中我要构建的每个目录都有一个
文件,该文件直接包含在唯一的Makefile中module.mk
- 我确实使用了以下几种功能:
更新2:根据@Beta的建议,我能够完成依赖项生成,生成文件的时间大约占总编译时间的14.2%。所以我将集中精力在我的C++代码中最小化头包含。谢谢你们两位的建议 我真的怀疑make的变量赋值(immediate with:=或recursive=)是否会对速度产生显著影响。当它产生严重影响时,一个具体而明显的情况是shell命令:
VAR := $(shell ...)
可能还有其他不明显的隐藏消费过程。例如,在我们的环境中,标准的临时windows目录位于网络驱动器上。因此,当在该驱动器上创建存储/更新的文件时(即使使用1G LAN),速度非常慢。您需要的是调试makefile
根据上面提到的文档,您可以以$(警告将要执行bla bla bla bla)的形式放置调试打印,然后观察进程最冻结的位置。我真的怀疑make的变量赋值(立即使用:=或递归=)是否会对总体速度产生重大影响。当它产生严重影响时,一个具体而明显的情况是shell命令:
VAR := $(shell ...)
可能还有其他不明显的隐藏消费过程。例如,在我们的环境中,标准的临时windows目录位于网络驱动器上。因此,当在该驱动器上创建存储/更新的文件时(即使使用1G LAN),速度非常慢。您需要的是调试makefile
根据上面提到的文档,您可以将调试打印以$(警告将执行bla-bla-bla)的形式放置,然后观察流程冻结的最主要位置
VAR := $(shell ...)