我在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您的文件。