问题是关于并行制作w / GNU makefile .
给定如下文件夹结构,目标是提供它支持make 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 回答
在命令行上设置变量肯定有效 . 您也可以使用MAKECMDGOALS(参见GNU make手册):