如何跟踪Makefile目标以进行故障排除?

zer*_*lus 20 makefile gnu-make

我们的构建系统中有一个冗长而复杂的Makefile.是否有一种很好的方法可以准确地跟踪为给定的make调用执行哪些目标?

Eld*_*mov 27

使用make -dmake --debug[=flags] 选项:

‘-d’

除正常处理外,还打印调试信息.调试信息说明正在考虑重新编写哪些文件,正在比较哪些文件时间以及结果是什么,哪些文件实际需要重新制作,哪些隐式规则被考虑以及哪些被应用 - 关于make如何决定什么的一切有趣做.该-d选项相当于‘--debug=a’(见下文).

‘--debug[=options]’

除正常处理外,还打印调试信息.可以选择各种级别和类型的输出.没有参数,打印"基本"级别的调试.可能的论点如下; 只考虑第一个字符,值必须以逗号或空格分隔.

a(all)启用所有类型的调试输出.这相当于使用'-d'.

b(基本) 基本调试打印发现过时的每个目标,以及构建是否成功.

v(详细)A级以上‘basic’; 包括有关解析哪些makefile的消息,不需要重建的先决条件等.此选项还启用‘basic’消息.

i(隐式)打印描述每个目标的隐式规则搜索的消息.此选项还启用‘basic’消息.

j (jobs)打印消息,提供有关调用特定子命令的详细信息.

m(makefile)默认情况下,尝试重新生成makefile时未启用上述消息.此选项也可在重建makefile时启用消息.请注意,该‘all’选项确实启用了此选项.此选项还启用‘basic’消息.

另一个选择是使用重制 - 一个GNU Make的修补版本,它增加了改进的错误报告,跟踪执行的能力和调试器.