我有一个make规则,它为一个源代码列表生成一个依赖文件。规则是这样的:
.depend: $(SRCS)
$(CC) $(INCLUDE) -MM $^ | sed 's-^\(.*\):-$(OBJDIR)\/\1:-'> .depend我想要的是:如果对于$(SRC)中的任何文件,gcc都失败了,那么就不应该创建.depend。目前,如果gcc在源文件上失败,我将得到一个不完整的.depend,在我修复该问题后,它将不会重新生成。我能做什么?我希望避免每个源文件都有一个.depend文件
发布于 2012-03-05 17:41:52
这应该是可行的:
.dependlist: $(SRCS)
$(CC) $(INCLUDE) -MM $^ > $@
.depends: .dependlist
sed 's-^\(.*\):-$(OBJDIR)\/\1:-' $< > $@发布于 2012-03-05 18:49:50
使用.DELETE_ON_ERROR目标:
.DELETE_ON_ERROR:
.depend: $(SRCS)
$(CC) $(INCLUDE) -MM $^ | sed 's-^\(.*\):-$(OBJDIR)\/\1:-'> .depend来自here
如果在makefile中的任何位置提到
.DELETE_ON_ERROR作为目标,那么如果规则的目标已经更改,并且其配方以非零退出状态退出,则make将删除该目标,就像它在接收信号时所做的那样。
https://stackoverflow.com/questions/9564382
复制相似问题