2010-11-14 605 views
3

我偶然發現一個人在一個makefile目標中改變mv命令到-mv。有什麼不同?makefile中「mv」和「-mv」shell命令有什麼區別?

%/install-stamp:                           
     dh_testdir                           
     dh_testroot                           
     dh_prep -p$(subst _,-,$(a))-toolchain                      
     cp -rl $(r) debian/$(subst _,-,$(a))-toolchain                  
     -mv debian/$(subst _,-,$(a))-toolchain/usr/bin/libgcc_s_sjlj-1.dll debian/$(subst _,-,$(a))-toolchain/usr/$(subst \ 
_,-,$(a))/bin                            
     -mv debian/$(subst _,-,$(a))-toolchain/usr/lib/libiberty.a debian/$(subst _,-,$(a))-toolchain/usr/$(subst _,-,$(a)\ 
)/lib                              
     rm -f debian/$(subst _,-,$(a))-toolchain/usr/share/man/man1/dllwrap*            
     rm -f debian/$(subst _,-,$(a))-toolchain/usr/share/man/man7/fsf-funding*           
     rm -f debian/$(subst _,-,$(a))-toolchain/usr/share/man/man7/gfdl*             
     rm -f debian/$(subst _,-,$(a))-toolchain/usr/share/man/man7/gpl*             
     touch $(@)  

回答

8

如果命令返回非零狀態,則在Makefile中的任何命令之前添加一個「 - 」指示make不會退出。基本上它是「我不在乎它是否失敗」。

+0

謝謝!現在我需要弄清楚爲什麼作者決定忽略這個錯誤! *嘆息* – Dima 2010-11-14 21:46:59

+1

查看片段,可能是因爲您可以多次運行該目標。第二次運行時,文件已經被移動,因此在進入rm命令之前會出錯。 – JOTN 2010-11-14 22:00:08