如何在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 $@