我试图使用多个这样的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来决定是否应该重建目标,以及何时构建它。
答案 0 :(得分:0)
我通过在第二个makefile中有两个规则来解决它:
在~/some/other/dir/Makefile
:
.PHONY: ~/generator/foo.xml
~/generator/foo.xml:
$(MAKE) -C ~/generator $(notdir $@)
foo.xml: ~/generator/foo.xml
cp $< $@