【问题标题】:Include target file with wildcards in makefile all directive在 makefile all 指令中包含带有通配符的目标文件
【发布时间】:2017-04-12 10:11:06
【问题描述】:

我认为这很容易,但我似乎无法弄清楚。假设我想解压缩一个目录中的所有 zip 文件并将结果放在另一个目录中。所有文件都遵循 region_*.zip 模式,其中 * 是一些 id。

raster/region_%.tif: zip/region_%.zip
    unzip -d raster $<

我的问题:如何在all 指令中包含此操作?

# Does not work
all: raster_region_%.tif

【问题讨论】:

    标签: wildcard gnu-make


    【解决方案1】:

    Make 总是从您要创建的目标向后工作,回到源文件(在本例中为 zip 文件)。

    必须以某种方式告诉 Make,您要创建的目标是什么。它不能凭空直觉。

    在这种情况下,如果您想为每个 zip 文件构建一个 .tif 文件,您需要首先获取所有 zip 文件的列表,然后将它们转换为目标文件:

    ZIPFILES := $(wildcard zip/region_*.zip)
    TARGETS := $(patsubst zip/region_%.zip,raster/region_%.tif,$(ZIPFILES))
    
    all: $(TARGETS)
    

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多