make:如何处理不断变化的依赖项列表

时间:2013-08-15 15:14:02

标签: makefile osx-lion gnu-make

我有一组* .x类型的文件,处理产生一组相应的文件* .x.y(其中每个* .x文件生成一个相应的* .x.y文件)。到目前为止很简单。

我遇到的两个问题是:

  1. * .x文件集不断变化,因此我不想在规则的依赖项部分中将其名称用作静态列表。
  2. 我只想处理那些大小大于0的* .x文件。
  3. 目前我使用:

    for a in $(find . -iname '*.x' -size +0); do make $a.y; done
    

    并且它有效,但我更喜欢更清洁,更make - y的解决方案。

    在OS X 10.7.5上使用GNU make 3.81。

1 个答案:

答案 0 :(得分:1)

您可以使用shell函数计算源文件列表:

SRCFILES := $(shell find . -iname '*.x' -size +0)

OUTFILES := $(SRCFILES:%=%.y)

all: $(OUTFILES)

%.x.y : %.x
        $(CONVERT) -to $@ $<