我想为每个现有文件*.html
创建一个规则。为了从每个html文件创建一个简单的html。
#Makefile
destination=dynamic/
mysite: $(destination)%.html
$(destination)%.html: source/%.html
#exemple
sed -e 's/<h1>/<h2>/' $< > $@
但我收到错误:
make: *** No rule to target dynamic/%.html needed by `site'. Stop.
我想根据动态目录中的每个文件制作mysite规则。每次修改相应的源文件时,重新制作动态目录中的每个文件。
有可能吗?
感谢您的帮助。
答案 0 :(得分:1)
destination=dynamic/
# this makes a list of all html files in source/
SOURCES := $(wildcard source/*.html)
# this transforms SOURCES into a list of files that belong in dynamic/
DESTS := $(patsubst source/%.html,$(destination)%.html, $(SOURCES))
.PHONY: mysite # just to let Make know that mysite is not actually a file
mysite: $(DESTS)
$(destination)%.html: source/%.html
sed -e 's/<h1>/<h2>/' $< > $@ or whatever
答案 1 :(得分:0)
您可以执行bash脚本并将其标准输出放入变量中。
#Makefile
my_variable=$(script myScript.sh)
$(my_variable)%.transformed: $(my_variable)%.original
sed -e 's/<h1>/<h2>/' $< > $@ or whatever