我有一个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将删除规则的目标(如果该目标已更改,并且其配方以非零退出状态退出),就像它收到信号时一样。