GNU在前提条件中使用目标文件名



我有一个文件列表,这些文件将从一个位置复制到另一个位置。目标位置不同,源位置总是相同的目录。所以我在我的makefile中做了这样的事情:

COPY_FILES += TargetDir1/MySource.c
COPY_FILES += TargetDir2/MyHeader.h
$(COPY_FILES): SourceDir/$(notdir $@)
@cp $< $@

这不起作用,因为自动变量在前提条件中没有展开。但是,有没有一种方法可以实现预期的行为?规则必须只为目标文件定义,所以我想%在这里不起作用。

如果有少量目标目录,可以使用静态模式规则。如果没有,你将不得不使用二次扩展:

COPY_FILES += TargetDir1/MySource.c
COPY_FILES += TargetDir2/MyHeader.h
.SECONDEXPANSION:
$(COPY_FILES): SourceDir/$$(@F)
@cp $< $@

最新更新