【问题标题】:How can I make a pattern rule dependency optional in a Makefile?如何在 Makefile 中使模式规则依赖项成为可选?
【发布时间】:2016-03-10 09:09:13
【问题描述】:

我想引用依赖项的时间戳当且仅当文件已经存在。我有这样的模式规则:

%.pdf: %.sil
    sile $< -o $@

这在正常情况下非常有效,但 .sil 文件会在外部引用同名的 lua 文件(如果存在)。我该如何意识到这一点,以便它检查时间戳并在 lua 文件较新时重新生成 PDF,但如果文件根本不存在则忽略依赖关系?

这个:

%.pdf: %.sil %.lua
    sile $< -o $@

…仅适用于文件存在且不存在时会导致错误的情况。

【问题讨论】:

    标签: makefile dependencies gnu-make


    【解决方案1】:

    有了足够新的 GNU 版本,您就可以使用:

    .SECONDEXPANSION:
    %.pdf: %.sil $$(wildcard $$*.lua)
            sile $< -o $@
    

    请参阅SECONDEXPANSION targetswildcard function 的手册部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多