【发布时间】:2014-05-05 00:25:48
【问题描述】:
我有两个 makefile,directoryA/Makefile 和 directoryB/Makefile。
directoryA/Makefile 依赖于一个相当大而复杂的directoryB/Makefile 中的目标。
我可以做一个递归制作
$(MAKE) -C directoryB
但这对several reasons 来说是不可取的。两大原因:我 make 必须多次执行 makefile,而make 无法正确知道何时需要重建目标。
我想使用include 指令。问题是双重的:
directoryB/Makefile中的目标都是相对于该 Makefile 定义的。许多命令依赖于工作目录
directoryB。
递归 make 解决了这两个问题,但有很大的缺点(前面提到过)。使用include时有没有办法解决这两个问题?
【问题讨论】:
-
必须至少重写一个makefile。必须从一开始就创建非递归 makefile 以了解它们是非递归的。
-
directoryA/Makefile中的目标/命令是否同样取决于工作目录directoryA? -
@Beta,目前是,但
directoryA/Makefile不是这样。我想我可以重写那个以便能够被包含,然后让directoryB/Makefile包含它。 -
@MadScientist,真的......我应该怎么做才能重写它们?有没有办法获取当前
Makefile的位置?这是最好的方法吗? -
@MadScientist,根据您的建议,我尝试了this 解决方案。