来自ls命令的Makefile循环结果

时间:2015-07-11 08:23:27

标签: shell makefile

我有一个文本文件列表,在执行以下命令时:

ls *.txt

会导致类似:

foo.txt bar.txt baz.txt

现在,如果我想输出如下:

File: foo.txt
File: bar.txt
File: baz.txt

我如何在Makefile中实现这一目标?

我一直在努力:

txtfiles = $$(ls *.txt)

list: $(txtfiles)

$(txtfiles):
    echo "File:" $@

但是当使用make list运行时,结果为:

File: $
File: $

我正在考虑尝试使用占位符%来实现这一目标,但不确定如何做到这一点。

  

注意:而不是$$(ls *.txt)我猜我可以使用$(wildcard *.txt)

2 个答案:

答案 0 :(得分:0)

好的,所以我想出来了:

my_list = $(addsuffix .dep, $(wildcard *.txt))
print_list: $(my_list)
%.dep: %
    @echo "Text File:" $<

使用make print_list运行它以取回预期结果。

答案 1 :(得分:0)

  

注意:而不是$$(ls *.txt)我猜我可以使用$(wildcard *.txt)

你必须。

.PHONY: $(txtfiles)规则之前添加$(txtfiles):以制作explicit request