以文本形式获取makefile命令评估

时间:2019-07-13 00:14:24

标签: bash makefile

我有以下问题。基本上,我有一个很长的Makefile,它会调用许多复杂的命令。它使用环境变量,其他Makefile文件中包含的方法,真的很难阅读bash魔术。例如,我有一个命令(不能在此处输入真实的命令):

foo ${bar} (sort ...) [...]

我正在分析此Makefile,我想知道运行它时究竟执行了什么。我要实现的是该命令以文本表示形式,因此所有内容都经过评估,我可以实际看到确切执行的内容,例如gcc something -Isomethingmore(因此,命令foo ${bar} (sort ...) [...]实际上意味着{{1 }})等。有没有办法做到这一点?因此,例如,我可以回显它,看看我在处理什么?

1 个答案:

答案 0 :(得分:2)

默认情况下,make打印执行的配方。因此,您应该在标准输出中看到确切的命令。使用grep可能会分离出您感兴趣的那个。如果make不打印食谱,则可能是:

  1. 因为该食谱的前缀为@,这表明make对此食谱保持沉默,
  2. 因为Makefile包含.SILENT special target,该菜单使所有配方均静音。

删除一个或另一个,执行该配方后,您应该会看到它。