在Makefile的先决条件列表中使用目标的目录路径

在Makefile的先决条件列表中使用目标的目录路径,makefile,Makefile,我编写了一个脚本,它接收两个以.cfg结尾的文件,并输出一个以.cmp结尾的文件。我想把它包含在我的Makefile中,因为一些源代码文件依赖于这个.cmp文件 在我的Makefile中,我要执行以下操作: %.cmp: %.cfg $(dir %)/default.cfg ./compare.pl $^ $@ 生成.cmp文件有两个依赖项。第一个是同名的.cfg文件,第二个是始终命名为default的.cfg文件。.cfg文件和output.cmp文件将位于同一目录中 有没有办法获取

我编写了一个脚本,它接收两个以.cfg结尾的文件,并输出一个以.cmp结尾的文件。我想把它包含在我的Makefile中,因为一些源代码文件依赖于这个.cmp文件

在我的Makefile中,我要执行以下操作:

%.cmp: %.cfg $(dir %)/default.cfg
    ./compare.pl $^ $@
生成.cmp文件有两个依赖项。第一个是同名的.cfg文件,第二个是始终命名为default的.cfg文件。.cfg文件和output.cmp文件将位于同一目录中

有没有办法获取目标的目录路径,并将其与prereq一起使用?

我想这可能就是您想要的:

.SECONDEXPANSION:
%.cmp: %.cfg $$(dir %)default.cfg
    ./compare.pl $^ $@
另请注意,
$$(dir%)
之后没有斜杠,
dir
函数总是在结果值后面附加一个斜杠