假设这个makefile片段
$(cfstdlib):
svn export --force $(CF_REPO)/masterfiles/trunk/lib/$(VERSION)/
cfstdlib是一个文件列表,而svn命令只运行一次,将创建列表中的所有文件。当我运行make时,它会为列表中的每个文件执行svn。如何让svn命令只运行一次?
答案 0 :(得分:0)
$(cfstdlib): sentinel ;
.PHONY: phony
.ONESHELL:
sentinel: phony
temp=`mktemp -d`
svn export --force $(CF_REPO)/masterfiles/trunk/lib/$(VERSION)/ $$temp
if [ "`diff -r $(VERSION) $$temp 2>&1`" ]
then
rm -rf $(VERSION)
mv $$temp $(VERSION)
touch $@
else
rm -rf $$temp
fi