cul*_*rón 5 unix haml makefile find
我有.haml文件,并希望将它们自动转换为.html文件,并在.haml更改时更新后者.
通用makefile规则没问题:
%.html: %.haml
hamlpy $< $@
Run Code Online (Sandbox Code Playgroud)
但现在我需要一个规则或命令来执行以下操作:
X.haml文件templates/make X.html命令,其中X是相同的文件名(haml替换为html).我找不到如何使用GNU Make或Unix查找.
您可以使用GNU make wildcard函数查找某个目录中的文件:
INDIR := templates
OUTDIR := ${CURDIR}
haml_files := $(wildcard ${INDIR}/*.haml)
html_files := $(subst ${INDIR}/,${OUTDIR}/,${haml_files:.haml=.html})
all : ${html_files}
clean :
rm -f ${html_files}
${OUTDIR}/%.html : ${INDIR}/%.haml
hamlpy $< $@
.PHONY : all clean
Run Code Online (Sandbox Code Playgroud)
INDIR并且OUTDIR可以在命令行上进行自定义,例如,将当前目录用于输入和输出:
$ make INDIR=. OUTDIR=.
Run Code Online (Sandbox Code Playgroud)
如果你的所有*.haml文件都是好名字(即没有空格或其他有趣的字符),你可以通过以下方式调用find(1):
HAML_FILES = $(shell find templates/ -type f -name '*.haml')
HTML_FILES = $(HAML_FILES:.haml=.html)
all: $(HTML_FILES)
%.html : %.haml
hamlpy $< $@
Run Code Online (Sandbox Code Playgroud)