如何在Makefile中使模式规则依赖项成为可选的?

如何在Makefile中使模式规则依赖项成为可选的?,makefile,dependencies,gnu-make,Makefile,Dependencies,Gnu Make,如果并且仅当文件已经存在时,我想引用依赖项的时间戳。我有这样一个模式规则: %.pdf: %.sil sile $< -o $@ %.pdf:%.sil sile$

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

%.pdf: %.sil
    sile $< -o $@
%.pdf:%.sil
sile$<-o$@
这在正常情况下非常有效,但是.sil文件会对同名的lua文件(如果存在)进行外部引用。如果lua文件较新,我如何知道这一点,以便它检查时间戳并重新生成PDF,但如果文件根本不存在,则忽略依赖关系

这:

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

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

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

.SECONDEXPANSION:
%.pdf: %.sil $$(wildcard $$*.lua)
        sile $< -o $@
。第二次扩展:
%.pdf:%.sil$$(通配符$$*.lua)
sile$<-o$@
请参阅手册一节以了解和

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