GNU Make(在多个文件上运行程序)

时间:2011-10-05 21:24:45

标签: makefile gnu-make

我一直试图弄清楚如何在一组文件上运行程序,使用GNU Make:

我有一个加载一些文件名的变量:

FILES=$(shell ls *.pdf)

现在我想在'FILES'中的每个文件上运行程序'p',但我似乎无法想象如何做到这一点。

'FILES'变量的一个例子是:

"a.pdf k.pdf omg.pdf"

我已经尝试了$(foreach ,,)没有运气,#!bin / bash like loop似乎失败了。

1 个答案:

答案 0 :(得分:1)

您可以在命令中执行shell循环:

all:
    for x in $(FILES) ; do \                                                
      p $$x ; \
    done

(请注意,只有命令的第一行必须以制表符开头,其他行可以有任何旧的空格。)

这是一种更具制作风格的方法:

TARGETS = $(FILES:=_target)

all: $(TARGETS)
    @echo done

.PHONY: $(TARGETS)

$(TARGETS): %_target : %
    p $*