【发布时间】:2020-07-11 07:40:27
【问题描述】:
我想使用make 使用脚本(例如 python)处理大量输入到输出。问题是脚本需要非常短的时间来运行每个输入,但是初始化需要一段时间(python 引擎 + 库初始化。)因此,一个只有输入->输出规则的天真的 makefile 最终会被这个初始化时间所支配。并行性对此无济于事。
python 脚本可以接受多个输入和输出,如下所示:
python my_process -i in1 -o out1 -i in2 -o out2 ...
这是使用脚本的推荐方式。
如何通过批量发送过时的输入-输出对来制定最能使用 my_process 的 Makefile 规则? parallel 之类的东西,但知道哪些输出已过时。
如果可能的话,我宁愿避免递归 make。
【问题讨论】:
-
听起来像是针对分组目标的工作。无法自己尝试,因为发行版卡在旧版本的 GNU Make 上。 gnu.org/software/make/manual/html_node/Multiple-Targets.html
-
@Andreas 不,分组目标在这里没有帮助。一方面,分组目标目前不适用于模式规则(我认为这是 bcs。这将是一个非常不寻常的模式,需要 N:N:1 三元关系),其次你没有得到列表需要从分组目标中更新的目标,至少不需要使用通常的特殊变量。
-
@Vroomfondel 是的,模式行不通。正在考虑与您的答案非常相似的事情,在 SOURCES 上使用 patsubst 来获取输出文件,而不是占位符目标“lastrun”。