Unix Make:创建多个文件的脚本

时间:2016-08-04 07:17:30

标签: unix makefile

我刚开始尝试将make用于我的数据分析管道,但我遇到了麻烦。我的大多数脚本都有一个输入文件和一个输出文件,这使得创建规则变得非常容易。但是,有些文件会创建几个输出文件,这会产生我知道make如何工作的程度。例如......

all:    results/list.txt \
        results/stats.txt \
        results/image.png

.PHONY: all

results/list.txt results/stats.txt results/image.png: analysis.R data.txt
        $^ results/ -c blue,red -p 

...其中analysis.R获取目录并输出名为的三个文件。虽然上面的recepe工作正常并输出三个文件,但脚本运行三次,而不是一次。我认为make看到它需要构建所有三个文件,然后调用脚本三次,因为它认为它需要为每个文件单独调用。

我做错了什么,怎么才让它只运行一次?是否有一些聪明的方法为具有多个输出的脚本创建规则?

1 个答案:

答案 0 :(得分:1)

也许添加一些其他虚假的目标:

 .PHONY: all doresults

运行测试的规则:

 doresults: analysis.R data.txt
     $^ results/ -c blue,red -p 

 all: doresults

或考虑使用一些时间戳文件....

相关问题