GNU Makefile“预处理器”?

ysa*_*sap 5 preprocessor makefile gnu-make analyzer

是否有输出“预处理”makefile 的-E选项,相当于 GCC 的选项?

我有一个项目由几十个模块的层次结构组成,每个模块都有自己的 makefile。构建是从主生成文件调用的。该主 makefile 包含包含、变量定义、命令行选项因变量等。

所以,本质上,我正在寻找处理过的 makefile,包括所有替换。

Eta*_*ner 4

据我所知。您能得到的最接近的东西是来自(或类似)的输出,make -qp它将向您转储 make 数据库。

此请求的部分问题在于许多替换等。发生在处理目标时,并且在没有实际尝试构建(至少在一定程度上)的情况下不一定知道目标列表,因此不一定可以完全扩展等。一个就地的 makefile。

输出make -d对于与 make 如何处理 makefile 相关的某些附带信息也很有用,但不直接包含 makefile 内容。

重制版或许还能提供一些额外有用的信息。

如果您正在寻找某些组装/等的计算值。global make 变量,那么Eric Melski 的这篇博客文章可能会非常有帮助。

tl;dr 它在 Makefile 中添加了这样的目标(尽管博客文章中有更多魔力,所以我建议阅读它)。

print-%:
    @echo '$*=$($*)'
    @echo '  origin = $(origin $*)'
    @echo '  flavor = $(flavor $*)'
    @echo '   value = $(value  $*)'
Run Code Online (Sandbox Code Playgroud)

虽然在个人使用中我用类似这样的东西替换了第一行

@echo '$*=$(subst ','\'',$($*))'
Run Code Online (Sandbox Code Playgroud)

以保持结果引用的正确性。