2017-04-21 113 views
0

如果我有這樣的一個Makefile:Makefile文件錯誤1

ifeq ($(RUN_INDEX),1) 
    @echo Removing old index files... 
    -rm *.*dx *.*nd *.ilg 
endif 

這總是返回「錯誤1(忽略)」,除非有每個具有擴展名的文件中的至少一個.dx,.nd或.ilg。

有沒有辦法避免這種情況,還是建議不要忽略它?

+0

由於潛伏者,這樣做吧。有什麼辦法可以解釋爲什麼? –

+0

@lurker如果它有效,我會從你的評論中作出回答,並在其中提出一些解釋。 –

+0

哎呀錯誤地刪除了我的第一條評論。 'rm'上的'-f'選項表示「不存在」......換句話說,如果它找不到要刪除的文件,它將不會投訴並且不會返回錯誤。然而,我很困惑爲什麼'-rm'不適合你。你能在你的makefile中顯示更大的上下文嗎?目標和整套命令的外觀如何?我沒有真正感到舒服的說我回答了這個問題,而沒有解釋爲什麼'-rm'沒有爲你做。 – lurker

回答

0

-前綴將忽略錯誤,但make仍會寫出錯誤發生的消息。 (請參閱this explanation。)

但是,您可以使用rm上的-f標誌。這個標誌的意思是「沒有flack」:如果rm無法找到你想要刪除的文件,或者有其他問題,它不會抱怨,只是成功。而make將不會更聰明。

所以你的makefile條目改成這樣:

ifeq ($(RUN_INDEX),1) 
    @echo Removing old index files... 
    -rm -f *.*dx *.*nd *.ilg 
endif 
+0

完美無瑕,非常感謝 –