我怎样才能让 gmake 给我所有包含的 makefile 的列表?

我怎样才能让 gmake 给我所有包含的 makefile 的列表?

我继承了一个混乱的 makefile 网络,它本身是从另一个项目继承的,到处都包含 makefile。我试图做一个简单的改变,而不破坏整个事情(虽然这很诱人,但我现在没有时间)。

有什么办法可以从 gmake 中得到完整的 makefile,IE,所有包含的文件都已包含在内?我知道如何转储数据库,但这与加载的所有无关垃圾一样难以遵循。

答案1

翻拍有一些非常有趣的调试输出。

答案2

您正在寻找的内容相当于cc -Efor make。我不知道有这样的等价物。使用外部工具在许多情况下会有所帮助,但并非所有情况下,由于二次扩张

但也许这可能会让你更近一步。在初始 Makefile 的末尾,添加以下规则:

.PHONY: printMakefiles
printMakefiles:
        echo $(MAKEFILE_LIST)

您现在可以通过运行来找出包含哪些 Makefiles

make printMakefiles

请注意,这不是 100% 可靠,因为可能存在条件包含。

答案3

不确定这是否递归地起作用,但是像这样的东西呢:

strace -e trace=open make | grep -i makefile

答案4

Makefile编辑您正在调用的main 。在末尾添加此行(或至少include在文件中出现的最后一行之后):

$(info MAKEFILE_LIST == $(MAKEFILE_LIST))

现在,当您运行make该文件时Makefile,它会在分派规则之前转储所包含文件的列表。

相关内容