首页 文章

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

提问于
浏览
0

问题是关于并行制作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 回答

  • 0

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

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

相关问题