如何解决如何将变量传递给Makefile中的规则?
我在目录中有几个项目,我想编写一个Makefile来构建所有这些项目的或子集。每个项目都位于一个以自己命名的文件夹中,该文件夹包含一个Makefile。
如何执行这些Makefile?
这是我尝试过的:
# Define the project names
PROJECT_NAMES := \
Project_1 \
Project_2 \
Project_3
# Define default behaviour
default: all
# Rule to build all projects
all:
$(foreach project,$(PROJECT_NAMES),$(CURRENT_PROJECT))
# Rule to build single project
.PHONY $(CURRENT_PROJECT)
$(CURRENT_PROJECT):
$(MAKE) -C $(CURRENT_PROJECT) make
我认为这个问题可能适用于类似问题,但未得到回答: How to make a Makefile call another Makefile rules?
解决方法
应该使用先决条件/依赖性来代替传递参数。这是我的解决方法:
# Define the project names
PROJECT_NAMES := \
Project_1 \
Project_2 \
Project_3
# Define default behaviour
default: all
# Rule to build all projects now depends on building individual projects
all: $(foreach project,$(PROJECT_NAMES),$(project)_build)
# Rule to build a single project
.PHONY: Project_%
Project_%:
@echo "****** Building $(subst _build,$@) ******"
@$(MAKE) -C $(subst _build,$@) all
在不带参数的情况下调用所有项目。只需将项目名称传递到makefile中即可构建单个项目的任何组合,例如:
make Project_1 Project_3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。