2012-03-05 69 views
1

我有一個make規則,它爲源列表生成一個依賴關係文件。這是規則:基於退出狀態的make和shell重定向

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

我要的是:如果GCC在$(SRC)的任何文件失敗,那麼的.depend不應該被創建。目前,如果gcc在源文件上失敗,我會得到一個不完整的.depend,在我解決問題後不會重新生成。我能做什麼?我想,以避免爲每個源文件

回答

0

使用.DELETE_ON_ERROR目標:

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

here

如果.DELETE_ON_ERROR被作爲makefile中任何位置的目標提及,那麼make會刪除目標規則如果它已經改變並且它的配方以非零退出狀態退出,就像它接收信號時一樣。

+0

這將無法正常工作,因爲sed將返回0作爲退出狀態無論如何騙人 – Patrik 2012-03-05 11:18:21

+0

@Patrik,是的,看起來你是對的... – 2012-03-05 12:07:31