Makefile 使用单个命令生成目标列表
假设这个makefile片段Makefile 使用单个命令生成目标列表,makefile,gnu-make,Makefile,Gnu Make,假设这个makefile片段 $(cfstdlib): svn export --force $(CF_REPO)/masterfiles/trunk/lib/$(VERSION)/ 其中,cfstdlib是一个文件列表,svn命令仅运行一次,将创建列表中的所有文件。当我运行make时,它会对列表中的每个文件执行svn。如何使svn命令只运行一次?可能重复的 $(cfstdlib): sentinel ;
$(cfstdlib):
svn export --force $(CF_REPO)/masterfiles/trunk/lib/$(VERSION)/
其中,cfstdlib是一个文件列表,svn命令仅运行一次,将创建列表中的所有文件。当我运行make时,它会对列表中的每个文件执行svn。如何使svn命令只运行一次?可能重复的
$(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