recursion - 递归gmake问题

标签 recursion makefile gnu-make

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

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

我通过查看 gmake manual 来完成这个

.PHONY: all clean dirs $(DIRS)

dirs: $(DIRS)

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

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

我正在学习 gmake,所以我肯定在这里做了一些愚蠢的事情:)

感谢您的帮助。

最佳答案

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

例如:

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

您的规则没有传递目标名称,例如干净,因此子 make 没有任何工作要做(因为所有内容都已构建)。

关于recursion - 递归gmake问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1245595/

相关文章:

c++递归没有明显原因退出

javascript - 递归的定义是什么

loops - 在makefile或CMake文件中的列表上并行迭代

macros - 如何在 GNU Make 中使用 $(call ...) 执行可变宏

makefile - gnu make : list the values of all variables (or "macros") in a particular run

C++ 简单但棘手的递归

java - 如何制作迭代方法的递归版本?

c - Makefile 覆盖自身

linux - 使用 linux csh 脚本在许多子目录中执行 makefile

php - xdebug.so : undefined symbol: zend_ce_error