2014-03-26 65 views
1

我有两个makefile,directoryA/MakefiledirectoryB/MakefileMakefile包含来自不同目录的makefile

directoryA/Makefile取决于相当大且复杂的directoryB/Makefile中的目标。

我可以做一个递归使

$(MAKE) -C directoryB 

但是,这是不可取的several reasons。两大原因:我必须多次执行makefile,并且make无法正确知道何时需要重建目标。

我想使用include指令。问题是双重的:

  1. directoryB/Makefile中的目标都是相对于该Makefile定义的。

  2. 许多命令取决于工作目录是directoryB

递归使得解决了这两个问题,但有很大的缺点(前面提到过)。在使用include时有没有办法解决这两个问题?

+1

不是没有改写makefile文件中的至少一个。非递归makefile必须从一开始就被创建,以了解它们是非递归的。 – MadScientist

+0

'directoryA/Makefile'中的目标/命令是否也取决于工作目录是'directoryA'? – Beta

+0

@Beta,目前是,但是'directoryA/Makefile'不是那么简单。我想我可以重写那个包含它的目录,然后用'directoryB/Makefile'包含它。 –

回答

0

很难没有看到directoryA/Makefile说,但另一种选择是有它include directoryB/Makefile,然后

cd directoryB 
make -f ../directoryA/Makefile