Makefile(s)debug:哪个文件/行调用命令?

我在makefile构build系统(Android在Linux下构build)中面临一个错误 – 某些文件被“rm”命令删除,我可以在构build日志中看到该命令。

我怎样才能find调用“rm”的makefile中的确切线? 有没有自动化的方法?

对于GNU Make,你可以做下面的技巧:

__shell := $(SHELL) SHELL = \ $(warning making '$@'$(if $^, from '$^')$(if $?, because of '$?'))$(__shell) 

当Make调用一个子shell来执行配方时, SHELL变量会被扩展。 在这些行中,它被替换,以便在每次展开时它将打印一个目标,它的先决条件和比目标更新的先决条件。 另外,每个调试消息都会附带正在执行的规则的文件和行号。

GMD使用相同的技术为某些目标设置断点。

假设你的make是一个Gnu make ,你也可以传递一些调试选项 ,比如--debug=b (基本的调试信息,通常就足够了)或者--debug=all ,和-d

有些文件可能会被删除,因为它们是中间的 。 还请阅读make 辅助文件和珍贵文件

您可以尝试make -d -w,然后从大量的输出行中grep您的文件。