目标:在Makefile中解压1个目录中的tar文件到另1目录,要求在目标目录中建立以tar文件名创建目录存在解压后的文件
经过摸索,参考
http://www.cnblogs.com/xwdreamer/p/3823463.html
http://blog.csdn.net/force_eagle/article/details/2629030
http://blog.chinaunix.net/uid-20672257-id-3345593.htmlMakefile与shell脚本区别
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1370926
得出有效执行语句
FILES := $(shell find $(XXX_CPK_DIR) -type f)
all: extract
extract:
echo extract...
for file in ${FILES} ;\
do \
echo $$file ;\
dir=$${file%.*} ;\
echo $$dir ;\
dir=$${dir##*/} ;\
echo $$dir ;\
dir=$(XXX_INSTALL_DIR)/$$dir ;\
echo $$dir ;\
mkdir -p $$dir ;\
tar -xzf $$file -C $$dir ;\
done
dir=$${file%.*}
最早为
dir = $${$$file%.*}
dir=$${$$file%.*}
$符号会在解析过程中,直接解析其后的字符串,$$file会被当作$file执行
最终的$${file%.*} ,会解释为dir=${file%.*} 执行,即把file字符串进行截取,并赋值给dir。
切记,=前后,不能有空格。不然会报dir: =: No such file or directory。