我有一个生成文件规则来生成 antlr 解析器的输出文件:
XLexer.c XLexer.h XParser.c XParser.h X.tokens: X.g
$(ANTLR) $(ANTLRFLAGS) X.g
正如预期的那样,当 Xg 更改时,这可以正常工作并重建所有生成的文件。但是当我使用 -j 标志运行并行 make 时,上述规则对每个文件运行一次,因此在这种情况下,antlr 调用并行运行 5 次。
有没有办法执行这种类型的规则但只运行一次命令?我知道 .NOPARALLEL: 规则,但这违背了目的。如果一个已经在运行但没有成功,我试图使用一个锁定文件来导致多个运行退出。