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_LIBUNWIND-FLAGS_UNWIND 我如何将这些值打印在标准输出上以进行调试?

4

3 回答 3

4

GNUmake提供了几个可以用来打印变量值的函数$(error ...)$(warning ...)$(info ...). 手册在第8.12 节控制 Make 的函数中提到了它们。

此外,您可以使用命令行参数-p--print-data-base让 make 打印所有规则和变量的值。将输出重定向到一个文件并分析它可能会让您更好地理解为什么这些值是它们的值。有关一些额外信息,请参阅第9.7 节选项摘要。

于 2013-01-27T04:22:52.840 回答
3

在 makefile 中打印宏 X 的值 - 只需添加行。(一种 printf )

$(警告 X 是 $(X))

于 2013-01-27T04:08:49.163 回答
1

Reinier 和 Shraddha 对所提出的问题有正确的答案,但我不确定这是正确的问题。

在我看来(仅基于发布的 makefile 片段),这些变量更有可能是您可以设置的变量,而不是已经设置的变量。那就是它们将是您控制用于定位 libunwind 的位置的方式。

因此,如果 try-cc 调用失败,我假设这意味着您根本没有安装 libunwind,或者您将它安装在非标准系统位置并且没有设置这些变量来告诉 make 关于它.

于 2013-02-10T13:41:34.890 回答