如何在Makefile中创建模式规则依赖项可选?

时间:2015-12-05 13:02:46

标签: makefile dependencies gnu-make

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

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

这在正常情况下工作得很好,但.sil文件对同名的lua文件进行外部引用(如果存在)。我如何知道这一点,以便检查时间戳并重新生成PDF,如果lua文件更新,但如果文件根本不存在则忽略依赖性?

此:

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

...仅适用于文件存在的情况,如果不存在则会导致错误。

1 个答案:

答案 0 :(得分:6)

使用足够新版本的GNU make,您可以使用:

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

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