gpt4 book ai didi

makefile - 如何将目标名称传递给子生成文件列表?

转载 作者:行者123 更新时间:2023-12-04 02:07:36 27 4
gpt4 key购买 nike

我有这样的设置:

/Makefile
/foo/Makefile
/foo/bar/Makefile
/foo/baz/Makefile

顶层 Makefile 包含一个调用 /foo/Makefile 的任务。 .这个 Makefiles 在子目录中创建了一个 makefile 列表(在这个例子中是 barbaz )。对于每个子目录,它调用 Makefile:
$(SUB_DIRS):
$(MAKE) -C $@

这对于 all 来说很好任务。但是如果我想做其他事情,我就会陷入困境。 是否有可能将目标传递给子生成文件列表? 例如:
$(SUB_DIRS):
$(MAKE) -C $@ <task>

clean: $(SUB_DIRS)-clean # or something?

还是我的整个概念错了?

最佳答案

您可以简单地使用 MAKECMDGOALS 多变的:

Make will set the special variable MAKECMDGOALS to the list of goals you specified on the command line. If no goals were given on the command line, this variable is empty.


$(SUB_DIRS):
+$(MAKE) -C $@ $(MAKECMDGOALS)
+标志很重要,所以底层 job server还使用适量的线程/核心处理递归调用。

您也可以使用 $(foreach )像这样的功能:
clean:
$(foreach DIR, $(SUB_DIRS), $(MAKE) -C $(DIR) $@;)

请注意@musicmatze 在评论中提到的 Make 标志(如 -j )不会在这里正确传递给 sub-make 进程。

关于makefile - 如何将目标名称传递给子生成文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com