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

时间:2012-02-28 19:18:49

标签: makefile

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

在我的Makefile中,我想这样做:

%.cmp: %.cfg $(dir %)/default.cfg
    ./compare.pl $^ $@

生成.cmp文件有两个依赖项。第一个是同名的.cfg文件,第二个是.cfg文件,总是命名为default。 .cfg文件和输出.cmp文件都将位于同一目录中。

有没有办法获取目标的目录路径并将其与先决条件一起使用?

1 个答案:

答案 0 :(得分:3)

我猜Secondary Expansion可能就是你要找的东西:

.SECONDEXPANSION:
%.cmp: %.cfg $$(dir %)default.cfg
    ./compare.pl $^ $@

另请注意$$(dir %)之后没有斜杠,dir函数始终将一个附加到结果值。