从另一个Makefile获取依赖项

时间:2014-11-03 16:29:53

标签: makefile

我试图使用多个这样的makefile:

~/generator/Makefile

foo.xml: foo-part1.xml foo-part2.xml foo-part3.xml
    ./generate $^ > $@

~/some/other/dir/Makefile

foo.xml:
    $(MAKE) -C ~/generator $@
    mv ~/generator/$@ $@

问题是:当我转到~/some/other/dir/并运行make foo.xml时,foo.xml没有依赖关系列表,即使make -C ~/generator foo.xml也未被调用(例如)~/generator/foo-part1.xml比目标更新。

我想到的唯一解决方案是使用~/some/other/dir/Makefile的绝对路径复制依赖关系列表,这非常糟糕:

foo.xml: ~/generator/foo-part1.xml ~/generator/foo-part2.xml ~/generator/foo-part3.xml

然后,我的问题是:在makefile中是否有一种方法可以询问另一个 makefile目标的依赖关系是什么?或者只是将请求foo.xml转发到该makefile并收集结果?我基本上希望第二个makefile依赖于第一个makefile来决定是否应该重建目标,以及何时构建它。

1 个答案:

答案 0 :(得分:0)

我通过在第二个makefile中有两个规则来解决它:

~/some/other/dir/Makefile

.PHONY: ~/generator/foo.xml
~/generator/foo.xml:
    $(MAKE) -C ~/generator $(notdir $@)

foo.xml: ~/generator/foo.xml
    cp $< $@