我编写了一个脚本,它接收以.cfg结尾的两个文件,并输出一个以.cmp结尾的文件。我想在我的Makefile中包含它,因为一些源代码文件依赖于这个.cmp文件。
在我的Makefile中,我想这样做:
%.cmp: %.cfg $(dir %)/default.cfg
./compare.pl $^ $@
生成.cmp文件有两个依赖项。第一个是同名的.cfg文件,第二个是.cfg文件,总是命名为default。 .cfg文件和输出.cmp文件都将位于同一目录中。
有没有办法获取目标的目录路径并将其与先决条件一起使用?
答案 0 :(得分:3)
我猜Secondary Expansion可能就是你要找的东西:
.SECONDEXPANSION:
%.cmp: %.cfg $$(dir %)default.cfg
./compare.pl $^ $@
另请注意$$(dir %)
之后没有斜杠,dir
函数始终将一个附加到结果值。