[英]How can I pass a variable to a rule in a 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
我认为这个问题可能有类似的问题,但没有回答: 如何使 Makefile 调用另一个 Makefile 规则?
应该使用先决条件/依赖项,而不是传递参数。 这是我解决它的方法:
# 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.