Makefile:等待文件可用

Makefile: wait for a file to become available

提问人:Łukasz Przeniosło 提问时间:11/15/2023 更新时间:11/15/2023 访问量:38

问:

我有一个庞大而复杂的 makefile 结构需要处理。在其中一个生成文件中的某个时刻,特定目录中需要一个头文件。有时会中断,因为该文件(尚不存在)。发生这种情况是因为 make 是调用的,并且不同的 make 文件之间存在争用条件。在这里同步的最佳方式是什么?例如,在 make 语言中,是否可以每 1 秒检查一次文件是否存在,并且仅在超时时失败或在出现后继续?-j8

多线程生成 文件

评论

5赞 G.M. 11/15/2023
诸如此类的问题几乎总是由于依赖项规范不完整造成的。您需要告诉如何创建/更新有问题的文件。make
2赞 tripleee 11/15/2023
accu.org/journals/overload/14/71/miller_2004 讨论了一些方法。我不同意其中的一半,但它仍然值得一读。
4赞 MadScientist 11/15/2023
对你的问题的简短而直接的回答是“否”,没有办法让等待先决条件出现,使用 makefile 语法。如前所述,make 的设计是,如果你在运行配方之前需要一个文件存在,那么你将其列为目标的先决条件,并且它的配方应该构建它。我想你当然可以让食谱等待它出现,相反:那会很奇怪,但会起作用。不过,您必须使用 shell(在配方中)来执行此操作,而不是 makefile 语法。
0赞 numan 11/17/2023
你可以用 make 执行 bash 脚本,但正如其他人所说,可能有更好的方法

答: 暂无答案