如何在Makefile中将命令行参数‘stefan’存入变量?
实现方法
有两种常见的方式可以实现你的需求,具体如下:
方法一:利用MAKECMDGOALS提取参数
Makefile的内置变量$(MAKECMDGOALS)会包含你在命令行指定的所有目标。你可以通过文本处理函数,从里面提取出第一个目标之外的内容作为自定义变量:
# 提取命令行中第一个目标之后的所有内容到NAME变量 NAME := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) # 将提取出的参数声明为伪目标,避免make尝试查找对应文件 .PHONY: $(NAME) foobar: @echo "要使用的参数是:$(NAME)" # 在这里写后续需要用到NAME变量的命令
执行make foobar stefan时,NAME变量就会被赋值为stefan。如果只需要提取单个参数(而非多个),可以把wordlist换成word:
NAME := $(word 2,$(MAKECMDGOALS))
方法二:通过命令行变量赋值(更直观)
如果你能接受调整命令行的写法,可以直接在执行时显式赋值变量,这种方式更清晰不易出错:
make foobar NAME=stefan
对应的Makefile里直接使用$(NAME)即可:
foobar: @echo "要使用的参数是:$(NAME)"
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

