我有一个工具foo
,可以接收一个或多个输入并生成相应的输出。例如,foo a.in
生成a.out
,foo a.in b.in
生成a.out
和b.out
。
a.out
仅取决于a.in
,而b.out
仅取决于b.in
。
虽然该工具可以在单个输入上运行,但使用多个输入运行效率更高,因此我可以使用规则
%.out: %.in
foo $?
单独生成每个out
文件,我想将它们分批调用foo
。
使用模式规则,我可以使用一次执行配方生成多个目标:
a%out b%out: a%in b%in
foo $?
但是,a.out
现在不必要地取决于b.in
和b.out
现在不必要地取决于a.in
。
stamp: a.in b.in a.out b.out
cat
当先决条件和目标之间只有一对一的依赖关系时,如何使用单个配方执行从多个输入生成多个目标?
答案 0 :(得分:0)
.INTERMEDIATE
暂存文件和时间戳文件可以执行此操作
.INTERMEDIATE: list
stamp: list
foo `cat list`
touch stamp
list: a.out b.out a.in b.in
@:
%out: %in
echo $? >> list