从make中的目标的变量中获取当前的先决条件文件



我有一个这样的目录结构:

+ root
  + src
    + file1.conf
    + file2.conf
    + ...
    + filen.conf
    + images
      + image1.png
      + image2.png
      + ...
      + imagem.png

我想用make这样处理它:

  1. .conf文件从src/拷贝到dist/
  2. 图像由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 $<

相关内容

  • 没有找到相关文章

最新更新