2015-02-23 161 views
1

我們有使用gccmakedep的腳本,它們使用依賴關係填充Makefile,該依賴項基於上次運行的系統。從Makefile中刪除依賴關係

我們如何讓Makefile中的clean目標自動刪除gccmakedep添加到Makefile的依賴關係?

(我不能在clean目標,搜索本身的"# DO NOT DELETE"分頻器的命令,因爲gccmakedep本身就會發現這樣的說法,並認爲這就是它應該剁......?)

回答

3

我覺得你可以做gccmakedep -fdepends.mk產生輸出到不同的生成文件。然後你可以包括它,並刪除乾淨的規則。

-include depends.mk 
clean: 
    @rm -f depends.mk 

就個人而言,我用cc -MMD -MP生成.d依賴,包括他們在Makefile文件。它不需要任何額外的工具,您可以清除.d文件以及對象文件。這裏是an example

這也是Scott McPeak的good writeup關於更便攜的解決方案和解釋。

+0

'clean'不應該依賴於depends.mk在你的榜樣或者使用腳本 - 否則它會嘗試建立依賴.mk在做清潔之前,這是浪費時間。相反,執行'@rm -f depends.mk'作爲你的配方,所以如果該文件還不存在,它就不會死亡,並且'clean'不依賴於任何東西。 – John 2015-02-25 18:23:29

+0

當然,爲什麼不呢。這取決於你想做什麼。我想這比一些人的說明更混亂。 – 2015-02-25 20:26:18

1

如果可能,請避免修改您的Makefile(並因此轉儲gccmakedep)。而是使用dependency tracking的外部文件。

在乾淨的規則,做清理(所以gccmakedep不直接觸發)