我的理解是,在make执行时,它会在内部生成一个DAG来表示项目中的所有依赖项.有没有办法获得DAG并绘制图表,比如使用像graphviz这样的东西?
我在Ubuntu 8.04上使用gnu make.
编辑
我只是碰到这些工具被称为跑mamdag和mamdot.他们应该同时使用nmake和gnu make,但我似乎无法找到让gnu make吐出mam文件的选项.
它可以在这里下载 - 这些包:
INIT
ast-base
ast-gpl
刚刚在AT&T的Glenn Fowler发现了这篇文章,描述了MAM语言和mamdot工具.
看起来你必须修补gnu make才能工作,虽然我还不是100%肯定.
也许有另一种方式?
有没有办法让GNU make打印导致命令失败时执行的目标的"回溯"?我经常处理严重混淆的makefile,同时解决在新系统上构建软件的可移植性问题,看起来这对于make来说应该是一个非常简单的事情,这将极大地帮助调试,但我找不到任何方式来请求它.我希望看到的是:
gcc: error: ...
make[2]: error: gcc ...
make[2]: error building target bar
make[2]: error building dependency bar for target foo
make[1]: error: make -C subdir
make[1]: error building target subdir
make[1]: error building dependency subdir for target all
...
Run Code Online (Sandbox Code Playgroud)
显示失败命令最终执行的整个依赖路径.
有没有办法做到这一点?