MK.*_*MK. 2 recursion makefile gnu-make
我需要编写一个快速的makefile来构建我的所有项目.这是C++代码,我正在使用gmake.
假设我有一个目录列表,我想cd到每个目录,发出gmake命令,如果成功,请转到下一个,依此类推.
我通过查看gmake手册来烹饪
.PHONY: all clean dirs $(DIRS)
dirs: $(DIRS)
$(DIRS): \n\t
$(MAKE) -C $@
Run Code Online (Sandbox Code Playgroud)
它适用于"所有"目标 - 如果我只输入gmake,它就是正确的.但如果我做gmake清洁它什么都不做.
我正在学习gmake,所以我肯定在做傻事:)
谢谢你的帮助.
小智 8
为了递归地创建除第一个目标之外的其他东西(我猜所有都是你的第一个目标),你需要让子知道要构建什么.您可以使用MAKEFLAGS和MAKECMDGOALS变量执行此操作.
例如:
$(DIRS):
$(MAKE) -C "$@" $(MAKEFLAGS) $(MAKECMDGOALS)
Run Code Online (Sandbox Code Playgroud)
你的规则没有传递目标名称,例如干净,所以sub-make没有工作要做(因为所有的都已经建成).