调试Makefile

3
一些Makefile包含了以下内容 -
ifneq ($(call try-cc,$(SOURCE_LIBUNWIND),$(FLAGS_UNWIND),libunwind),y)
        msg := $(warning No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 0.99);
        NO_LIBUNWIND := 1

每当我运行这个 make 命令时,都会收到以下错误信息:
warning No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 0.99

我想调试这个问题 - 我想知道引起这个问题的SOURCE_LIBUNWINDFLAGS_UNWIND的值,我该如何将这些值打印到标准输出以便调试?


try-cc 类似于定义 try-cc $1 endef。也许你可以在那里检查一下。 - farmer1992
3个回答

4
GNU make提供了几个函数,可用于打印变量的值:$(error ...)$(warning ...)$(info ...)。手册中在第8.12节函数控制Make中提到了它们。
此外,您可以使用命令行参数-p--print-data-base让make打印所有规则和变量的值。将输出重定向到文件并进行分析可能会更好地理解这些值为什么是这样的。请参见9.7选项摘要中的一些额外信息。

3

要在 makefile 中打印宏 X 的值 - 只需添加以下行。 ( 类似 printf )

$(warning X 的值为 $(X))


1
Reinier和Shraddha给出了正确的答案,但我不确定这是否是应该提出的正确问题。根据发布的makefile片段,似乎更可能是您可以设置的变量而不是已经设置的变量。也就是说,它们将是您控制用于定位libunwind的位置的方式。因此,如果try-cc调用失败,我会假设这意味着您没有安装libunwind,或者您已将其安装在非标准系统位置,并且尚未设置这些变量以告诉make。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接