根据退出状态进行make和shell重定向



我有一个make规则,它为源列表生成依赖项文件。这就是规则:

.depend: $(SRCS)
    $(CC) $(INCLUDE) -MM $^ | sed 's-^(.*):-$(OBJDIR)/1:-'> .depend

我想要的是:如果$(SRC)中的任何文件的gcc失败,那么就不应该创建.depend。目前,如果gcc在源文件上失败,我将得到一个不完整的.depend,在我修复问题后,它将不会重新生成。我能做什么?我想避免每个源文件都有一个.depend文件

这应该有效:

.dependlist: $(SRCS)
    $(CC) $(INCLUDE) -MM $^ > $@
.depends: .dependlist
    sed 's-^(.*):-$(OBJDIR)/1:-' $< > $@

使用.DELETE_ON_ERROR目标:

.DELETE_ON_ERROR:
.depend: $(SRCS)
    $(CC) $(INCLUDE) -MM $^ | sed 's-^(.*):-$(OBJDIR)/1:-'> .depend

从这里:

如果在makefile中的任何位置提到.DELETE_ON_ERROR是目标,那么make将删除规则的目标(如果该目标已更改,并且其配方以非零退出状态退出),就像它收到信号时一样。

最新更新