我正在尝试将命令的结果分配给GNU make中的变量。如果我在规则之外做的话,它可以工作:
$ cat stack.mk
GIT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
all:
@echo Git branch is $(GIT_BRANCH)
$ make -f stack.mk all
Git branch is dev
但如果我把它放在规则体中,那就不行了:
$ cat stack.mk
all:
export GIT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
@echo Git branch is $(GIT_BRANCH)
$ make -f stack.mk all
export GIT_BRANCH=dev
Git branch is
是否可以在规则中分配变量。此时我想将几个git
命令的结果分配给shell / Makefile
变量。
答案 0 :(得分:6)
是的,如果您尝试设置Makefile
变量,可以使用eval
函数执行此操作。
all:
$(eval GIT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD))
echo Git branch is $(GIT_BRANCH)