2011-11-03 70 views
1

在makefile的clean中,我寫了類似rm -rf *.o。但它沒有清理文件。如果我已經給rm -rf libdummy.o,那麼它清理它正確。所以,如果我使用*,它不按預期工作。在makefile中刪除* .o不會清除文件

 
clean: 
    rm -rf *.o 
    rm -rf dummy.a 

並且輸出是

 

    [exec] rm -rf *.o 
    [exec] rm -rf dummy.a 

如果該文件夾具有a.ob.odummy.a。在make clean之後,a.ob.o出現在該文件夾中itsefl,dummy.a被刪除。

注意:我正在windows中執行這個make,使用tornado 2.2包爲vxworks構建。所有命令如make,cd,cp,rm都是從tornado包執行的。 沒有名爲clean的文件名。更多我已經宣佈cleanPHONY標籤也。

下面的討論與我的問題不同。

Makefile clean not removing *.o files?

+0

您應該發佈makefile的相關部分 –

+0

發佈您的make run的相關輸出部分。 – SKi

回答

4

在Unix環境,通配符的像*.o的膨脹受到殼調用等rm其他程序之前處理。如果我沒有記錯,Tornado不包括Unix風格的shell。我懷疑它的make改爲使用cmd.exe來調用命令。 cmd.exe不像Unix shell那樣進行通配符擴展。它只會通過*.orm,由於-f選項,它會默默地忽略它。

如果是這種問題的原因,你既可以使用Windows del命令,做它自己的通配符擴展,或者你可以讓make做通配符擴展你寫rm -rf $(wildcard *.o)

1

確保包括以下在你之後的對象申報的Makefile: 都:你的名字執行]清潔

**正好解決了我的makefile問題,因爲清潔必須顯式聲明。