我有一个make规则,它为源列表生成依赖项文件。这是规则:
.depend: $(SRCS)
$(CC) $(INCLUDE) -MM $^ | sed 's-^\(.*\):-$(OBJDIR)\/\1:-'> .depend
我想要的是:如果gcc对$(SRC)中的任何文件失败,则不应创建.depend。目前,如果gcc在源文件上失败,我将得到一个不完整的.depend,在我修复问题后将不会重新生成.depend。我能做什么?我想避免为每个源文件使用.depend文件
答案 0 :(得分:2)
这应该有效:
.dependlist: $(SRCS)
$(CC) $(INCLUDE) -MM $^ > $@
.depends: .dependlist
sed 's-^\(.*\):-$(OBJDIR)\/\1:-' $< > $@
答案 1 :(得分:0)
使用.DELETE_ON_ERROR
目标:
.DELETE_ON_ERROR:
.depend: $(SRCS)
$(CC) $(INCLUDE) -MM $^ | sed 's-^\(.*\):-$(OBJDIR)\/\1:-'> .depend
来自here:
如果在makefile中的任何位置提到
.DELETE_ON_ERROR
作为目标,那么make将删除规则的目标(如果它已更改并且其配方以非零退出状态退出),就像它收到时一样信号。