Usa rm -f (o ancora meglio $(RM) , fornito da make integrato regole, che possono essere trovate usando make -p ) invece di rm nel tuo clean regola.
Quando i bersagli falliscono
Quando un obiettivo viene eseguito, restituisce uno stato in base al fatto che abbia avuto successo o meno:se un obiettivo fallisce, allora make non eseguirà alcun obiettivo che dipende da esso. Ad esempio, nell'esempio precedente, se "clean" fallisce, la ricostruzione non eseguirà l'obiettivo "build". Sfortunatamente, ciò potrebbe accadere se non ci sono file core da rimuovere. Fortunatamente, questo problema può essere risolto abbastanza facilmente includendo segno aminus davanti al comando il cui stato deve essere ignorato:
clean: -rm -f *.o core
~ http://www.cprogramming.com/tutorial/makefiles.html
rm -f
FORCErà e non restituirà alcun errore