GNU制作的目标是否依赖于来自其他makefile的目标的竞争?

时间:2011-06-02 20:14:03

标签: makefile gnu-make

我有几个代表项目子部分的目录,每个目录都有自己的Makefile 我想创建一个主Makefile,其中包含每个子部分的目标,每个目标都满足以下条件:

  • 依赖于该子项目的Makefile中的某个目标 这是棘手的部分。
  • 将子项目生成的一些结果库/可执行文件复制到一个中心目录(类似于“make install” - 就像它一样)。
    我已经可以使用简单的命令来实现。

我只能找到有关GNU make的include指令的信息,但这对我没有多大帮助,因为它似乎没有将所包含的makefile的规则(和执行)封装在它自己的目录中,但是而只是#include他们是C风格(而不是将它们视为具有不同范围的包)。

INSTALLDIR := build
SRCDIR := src

TARGETS := projA projB
.PHONY: $(TARGETS)
TARGETS_PATH := $(addprefix $(SRCDIR)/, $(TARGETS))
MAKEFILES := $(addsuffix /osx.mak, $(TARGETS_PATH))
# include them somehow?

对于上面定义的此类设置,我现在希望每个$(TARGETS) 依赖在其相应Makefile的release目标上(类似projA: $(SRCDIR)/projA/osx.mak @ release对于projA,用我自己的语言表示目标projA取决于特定Makefile中release目标的成功执行。

有没有办法实现这个目标?
您可以建议除GNU make之外的其他工具,但子项目makefile已经编写为makefile。

1 个答案:

答案 0 :(得分:2)

查看recursive make

你可以做点什么,

SRCDIR := src
TARGETS := projA projB
.PHONY: $(TARGETS)

$(TARGETS):
    cd $(SRCDIR)/$@; $(MAKE) release