我有一个像这样的目录结构:
+ root
+ src
+ file1.conf
+ file2.conf
+ ...
+ filen.conf
+ images
+ image1.png
+ image2.png
+ ...
+ imagem.png
我想使用make
来处理它:
.conf
个文件已从src/
复制到dist/
optipng
进行处理,最终会以dist/images
结束。还有一些其他的事情要做,但它类似于我现在遇到的麻烦。
我试着这样做:
# SOURCES
CONF=$(wildcard src/*.conf)
IMAGES=$(wildcard src/images/*.png)
# TARGETS
CONF_T=$(CONF:src/%=dist/%)
IMAGES_T=$(IMAGES:src/%=dist/%)
all: $(CONF_T) $(IMAGES_T)
$(CONF_T): $(CONF)
# This always echoes the first .conf file,
# which I guess is correct, but not what I want.
@echo $<
# So this won't work:
cp $< $@
$(IMAGES_T): $(IMAGES)
# Same as above
optipng $< -out $@
如何将当前输入文件提供给提供变量中包含的文件列表的目标?
我不想硬编码文件名,因为我不知道最终会有多少文件名。
答案 0 :(得分:1)
使用模式规则:
dist/%.conf: src/%.conf
@echo Conf: building $@ from $<
dist/images/%.png: src/images/%.png
@echo Image: building $@ from $<