调试Makefile如何抑制静默

调试Makefile如何抑制静默,makefile,gnu-make,Makefile,Gnu Make,有没有办法压制规则中的沉默“@”? 我想查看Makefile的功能,但给定Makefile中的所有规则都是用前面的“@”定义的,如: go: @do something here... 我搜索一个选项以查看输出,因为@不在那里。您可以使用-n标志运行make。您将能够看到执行了哪些命令。但实际上没有执行它们 从GNU make手册: 当make被赋予标志“-n”或“-just print”时,它只会产生最大的回声 配方,而不执行它们。请参阅选项摘要。在这种情况下 甚至以@开头的配方行也

有没有办法压制规则中的沉默“@”? 我想查看Makefile的功能,但给定Makefile中的所有规则都是用前面的“@”定义的,如:

go:
    @do something here...

我搜索一个选项以查看输出,因为
@
不在那里。

您可以使用
-n
标志运行
make
。您将能够看到执行了哪些命令。但实际上没有执行它们

从GNU make手册:

当make被赋予标志“-n”或“-just print”时,它只会产生最大的回声 配方,而不执行它们。请参阅选项摘要。在这种情况下 甚至以@开头的配方行也会打印出来。这面旗是 有助于找出make认为不需要的食谱 实际上是在做


除了按照建议使用
-n
(如果makefile在您的控制下可以编辑)之外,还可以考虑使用类似于我的automake灵感的东西


这允许您在运行时动态覆盖
make
的静音功能。

您可能愿意这样做:

  • 在makefile的顶部,放置
    静默?=@

  • 将所有
    @
    -前缀更改为
    $(静默)

然后,默认情况下,
make
将观察静音,而
make silent=
将 要冗长

如果你不想这样做,很有可能:

cat Makefile | sed 's/\t@/\t/g' | make -f -
我会成功的