我有一个这样的目录结构:
+ 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 $@
如何获得当前输入文件的目标,是提供一个文件列表包含在一个变量?
我不想硬编码文件名,因为我不知道最终会有多少个文件名
使用模式规则:
dist/%.conf: src/%.conf
@echo Conf: building $@ from $<
dist/images/%.png: src/images/%.png
@echo Image: building $@ from $<