Makefile 传递参数到子目录的makefile
时间: 2024-09-09 21:12:00 浏览: 42
Makefile是一种自动化构建工具,用于协调源代码文件之间的依赖关系并执行相应的构建步骤。当你有一个主Makefile,并希望将参数传递给位于子目录的另一个Makefile时,可以使用`$(wildcard)`通配符或者`include`命令配合变量传递。
1. **使用通配符**:假设子目录下的Makefile叫`subdir_Makefile`,你可以这样设置:
```make
SUBDIRS = subdir
all: $(SUBDIRS:%=subdir/%)
subdir/%: ; @$(MAKE) -C $@ $(ARGS) # 将ARGS替换为你想传递的参数
```
这样,当你运行`make all ARGS=my_param`时,会递归地在每个子目录(这里假设`subdir`下也有Makefile)中执行相同的Makefile并传递参数`my_param`。
2. **使用`include`**:
```make
# 主Makefile
ARGS = my_param
SUB_DIR_MAKEFILE = subdir/Makefile
include $(SUB_DIR_MAKEFILE)
```
在子目录的Makefile中,通常需要显式地获取并处理这些参数。例如:
```make
# 子目录Makefile (subdir/Makefile)
ALL_TARGET := all
$(ALL_TARGET): ; @echo "Building with parameters: $(ARGS)"
```
阅读全文