Makefile 如何制作“不打印”;目标配方失败?

Makefile 如何制作“不打印”;目标配方失败?,makefile,gnu-make,Makefile,Gnu Make,我正在为一系列编译构建一个Makefile,以显示用于与教程中的示例同步的渐进式输出差异。其中一些运行会生成错误代码,但由于这是“问题”定义的一部分,因此当目标失败时,make输出的消息(“Makefile:15:recipe for target`run3'failed”)会有某种阻碍 我知道忽略错误代码,但是否可以抑制该输出?最好是在Makefile中 类似地,是否可以从Makefile(相当于“--no print directory”)中禁止输入和离开子目录的消息 而且,是的,我对GNU

我正在为一系列编译构建一个Makefile,以显示用于与教程中的示例同步的渐进式输出差异。其中一些运行会生成错误代码,但由于这是“问题”定义的一部分,因此当目标失败时,make输出的消息(“Makefile:15:recipe for target`run3'failed”)会有某种阻碍

我知道忽略错误代码,但是否可以抑制该输出?最好是在Makefile中

类似地,是否可以从Makefile(相当于“--no print directory”)中禁止输入和离开子目录的消息


而且,是的,我对GNU的回答很满意。

为了达到你想要的效果,我会在makefile中使用
--沉默--忽略错误--无打印目录
GNU
Make
切换并将
stderr
重定向到
/dev/null
2>/dev/null
)命令,用谷歌搜索一下,答案就出来了。特殊目标.SILENT和.IGNORE完全符合我的要求。

我更喜欢可以在Makefile中使用的解决方案。设置
MAKEFLAGS=--SILENT--IGNORE errors--no print directory
是否有帮助?谢谢,Jack。不太可能,除非您可以在Makefile中设置它。我假设你的意思是作为一个环境变量?是吗?这两个选项似乎都没有关闭目标blah/blah.foo的
配方失败
消息。是,如果在没有先决条件的情况下同时指定了.SILENT:和.IGNORE:,则该消息将被抑制。请注意,该消息似乎是在3.82之后添加的,它在Cygwin版本中,但不在官方的3.82源代码中。该消息也出现在版本4.0中。在
旁边。忽略
配方行文本开头的
-
(在初始选项卡之后)以及
。沉默的
也适用于我。我的GNU Make版本是4.1。