2010-11-14 128 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