如何在并行制作中处理相同目录的不同目标

时间:2012-03-12 01:21:02

标签: makefile parallel-processing gnu

问题是关于并行制作w / GNU makefile。

给定如下文件夹结构,目标是提供一个支持make release / debug / clean的makefile。

项目文件夹结构:

   foo  
     +-foo1
     +-foo2
     +-foo3

makefile可能像:

SUBDIR = foo1 foo2 foo3
.PHONY $(SUBDIR) release debug clean
release: $(SUBDIR)
$(SUBDIR):
     $(MAKE) -C $@ release

debug: $(SUBDIR)
#below is incorrect. $(SUBDIR) is overriden.
$(SUBDIR):
     $(MAKE) -C $@ debug
..

子目录列表被设置为并行制作的虚假目标。但是它丢失了原始目标的信息(发布,调试,清理等)。

一种方法是为目录的名称添加后缀并在命令中恢复它,但这很奇怪。另一种方法可能是使用变量,但不知道如何解决它。

问题是: 如何编写目录规则,支持并行制作w /不同的目标(发布/调试/清理)?

非常感谢任何提示。

1 个答案:

答案 0 :(得分:0)

在命令行上设置变量肯定有效。您也可以使用MAKECMDGOALS(参见GNU make手册):

$(SUBDIR):
        $(MAKE) -C $@ $(MAKECMDGOALS)