Unix Make:创建多个文件的脚本
我刚开始尝试使用Unix Make:创建多个文件的脚本,unix,makefile,Unix,Makefile,我刚开始尝试使用make进行数据分析管道,但遇到了一个障碍。我的大多数脚本都有一个输入文件和一个输出文件,这使得创建规则非常容易。然而,有些人创建了几个输出文件,这就给我在了解make如何工作方面带来了问题。例如 all: results/list.txt \ results/stats.txt \ results/image.png .PHONY: all results/list.txt results/stats.txt results/image
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
看到它需要构建所有三个文件,然后调用脚本三次,因为它认为它需要为每个文件单独调用
我做错了什么?我怎样才能让它只运行一次?是否有一些聪明的方法可以为具有多个输出的脚本创建规则?也许可以添加一些其他虚假目标:
.PHONY: all doresults
使用运行测试的规则:
doresults: analysis.R data.txt
$^ results/ -c blue,red -p
及
或考虑使用一些时间戳文件…
使用results/.timestamp
添加到all
,并将touch results/.timestamp
添加到分析规则中。谢谢别忘了用makeclean
删除时间戳,并让clean
也成为一些虚假的目标
all: doresults