[英]GNU make - accelerate non-parallel makefile without modification
我有一个包含一组makefile的项目,这些makefile不能用make --jobs=N
运行,因为依赖关系没有足够严格地指定make
以正确的顺序正确执行配方(即我得到竞争条件)。
我目前正在使用Electric-Cloud.com的Huddle,它完全符合我的需要:它解析makefile,然后并行执行作业并解释未指定的依赖项。
问题:是否有免费或免费的东西可以做到这一点?
是的我知道我可以重新编写makefile,但项目管理人员说“没办法”。
更新#1
我知道我必须做一些工作才能获得类似于Electric-Cloud功能的功能。
我知道Electric-Cloud会解析makefile以找到依赖关系,所以使用makedepend
不会完成同样的事情吗?
我在想:
makedepend
include <makedepend.output>
输入输出 make all --jobs=64
更新2
结果makedepend
特定于C / C ++:它只运行源文件上的预处理器并解析任何#include
语句; 不是我需要的。
我需要这个人要求的东西: 构建一个makefile依赖/继承树
更新3
makefile“依赖图生成器”实际上已经存在
http://plindenbaum.blogspot.com/2012/11/visualizing-dependencies-of-makefile.html?m=1
但这对我没有帮助。
我的许多食谱都创建了目录,这些目录由其他目标的食谱使用,有效地使它们成为隐含的先决条件。
上述URL的图形依赖关系工具通过解析构建日志的语句来工作,但这些语句并不表示隐式依赖关系。
即使我尝试使用--dry-run
运行我的makefile,构建--dry-run
失败,因为一些未执行的配方 - 导致它是干运行 - 创建其他make
调用只需要'假装执行'的目录食谱。
更新4
Electric-Cloud已经使Huddle - 4个本地核心,非群集 - 永远免费为任何人。 此外,它们输出一个.xml文件,列出每个作业的依赖项,以便我可以使用它来修复我的makefile兼容,这样它们就与--jobs
选项兼容。
我目前正在使用Electric-Cloud.com的Huddle,它完全符合我的需要:它解析makefile,然后并行执行作业并解释未指定的依赖项。
我实际上不了解这些工具,但你不能在他们的控制下为他们提供一个超级makefile ,这澄清了各种目标的内在依赖性吗?
您可能只需要为这些(导入的?)项目目录结构和另一个Makefile
添加一些间接级别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.