包含生成的makefile而不显示警告消息

C0d*_*ker 7 makefile gnu-make

对于我的项目,我会自动生成makefile并包含它们,如下所示:

all:
    @echo 'SUCCESS is $(SUCCESS)'

clean:
    rm depend.mk

depend.mk:
    @echo 'Creating $@'
    @echo 'SUCCESS := 1' > $@

.PHONY: all clean

include depend.mk
Run Code Online (Sandbox Code Playgroud)

这有效,但include行会生成一条警告消息:

$ make
Makefile:13: depend.mk: No such file or directory
Creating depend.mk
SUCCESS is 1
Run Code Online (Sandbox Code Playgroud)

我想沉默第一条警告线说依赖.mk不存在.我知道它不存在,因为我有一个规则来生成它,所以警告是不必要的(除非当然没有规则).我不希望make忽略包含文件不存在的错误,并且没有规则,因此前缀includea -忽略错误对我不起作用.我想要类似于bash将stderr管道到/ dev/null的惯例,some_cmd 2>/dev/null但是要包含在make中.

上面的示例是此案例的一个非常简单的示例.在我的实际项目中,包含了很多自动生成的makefile(通过clang的自动依赖关系生成),这意味着新的运行make会使我的屏幕充满这些警告消息.

这样的事情是否可能,或者我只是要处理烦人的警告信息?

lor*_*nix 1

我尝试了很多(很多!)方法来看看是否可以阻止或重定向错误消息。没有运气。

但是当我尝试-include(包括前导破折号)时,它没有给出错误,并且makecleanalldepend.mk默认”都正常工作并按预期进行。

您不想使用该-include变体有什么特殊原因吗?似乎完全符合您的要求,并且不会以任何方式改变 Makefile 的工作方式,只是在第一次通过 Makefile 期间不会显示错误。