【问题标题】:recursive gmake question递归gmake问题
【发布时间】:2009-08-07 15:56:32
【问题描述】:

我需要编写一个快速生成文件来构建我的所有项目。这是 C++ 代码,我正在使用 gmake。

假设我有一个目录列表,我想 cd 到每个目录,发出 gmake 命令,如果成功,则转到下一个,依此类推。

我通过查看gmake manual 烹制了这个

.PHONY: all clean dirs $(DIRS)

dirs: $(DIRS)

$(DIRS): \n\t
    $(MAKE) -C $@

它适用于“所有”目标 - 如果我只输入 gmake,它会做正确的事情。但是如果我执行 gmake clean 它什么都不做。

我正在学习 gmake,所以我肯定在这里做一些傻事:)

感谢您的帮助。

【问题讨论】:

    标签: recursion makefile gnu-make


    【解决方案1】:

    为了递归地制作第一个目标以外的东西(我猜都是你的第一个目标),你需要让子制作知道要构建什么。您可以使用 MAKEFLAGS 和 MAKECMDGOALS 变量来执行此操作。

    例如:

    $(DIRS):
            $(MAKE) -C "$@" $(MAKEFLAGS) $(MAKECMDGOALS)
    

    您的规则没有传递目标名称,例如干净,所以 sub-make 没有工作要做(因为一切都已经构建好了)。

    【讨论】:

    • 是的,确实解决了问题。谢谢。
    猜你喜欢
    • 2016-02-01
    • 2011-12-10
    • 2011-08-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多