如何让 Make 确认一个配方中的两个中间依赖关系?

如何让 Make 确认一个配方中的两个中间依赖关系?

我正在使用以下食谱.sup将文件转换为文件:.ass

%.idx %.sub: %.sup
    bdsup2subpp --language en -o $*.sub $<

%.srt: %.sub
    vobsub2srt $*

%.ass: %.srt
    ffmpeg -hide_banner -y -nostdin -i $< $@

Make会删除所有中间文件.sub.srt文件,但它似乎没有注意到这些.idx文件。将依赖项添加%.idxvobsub2srt配方将导致它删除.idx.sub文件,具体取决于哪个先出现,但绝不会同时删除两者。

有没有办法让 make 认识到这两个中间体都是从这个单一模式规则生成的,从而在一切完成后删除它们?

答案1

我不知道这是否是最好的方法,但是

%.idx: %sup
  bdsup2subpp --language en -o $*.sub $<

%.sub: %.idx
  true

它有一些问题。它可能不会尝试生成%.sub,我最初是相反的

%.sub: %sup
  bdsup2subpp --language en -o $@ $<

%.idx: %.sub
  true

但意识到这不会触发第二条规则。

相关内容