Makefile中使用shell实例

目标:在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。


你可能感兴趣的:(Makefile中使用shell实例)