如何在makfile命令中使用eval使用bash变量更改宏值
我在makefile命令中有一个bash函数,希望更改宏的值。 可能吗如何在makfile命令中使用eval使用bash变量更改宏值,bash,makefile,Bash,Makefile,我在makefile命令中有一个bash函数,希望更改宏的值。 可能吗 C_DFLAGS := gui : parse_flags () { echo $$1; for word in $$1; do if [ $${word::2} = -D ] ; then $(eval C_D_FLAGS+=$${word}); fi ; done ; } ; parse_flags "-D/test -D/TEST" @echo "C_D_FLAGS :$(C_D_FLAGS)"
C_DFLAGS :=
gui :
parse_flags () { echo $$1; for word in $$1; do if [ $${word::2} = -D ] ; then $(eval C_D_FLAGS+=$${word}); fi ; done ; } ; parse_flags "-D/test -D/TEST"
@echo "C_D_FLAGS :$(C_D_FLAGS)"
$(eval)
将在实际bash函数调用之前进行解释。不能从bash更新make
变量-这是一个下游过程
但是,您尝试运行的代码很容易替换为本机语法,即:
$ cat Makefile
C_D_FLAGS :=
gui: C_D_FLAGS += -D/test -D/TEST
gui:
@echo "C_D_FLAGS: $(C_D_FLAGS)"
$ make gui
C_D_FLAGS: -D/test -D/TEST
如果从其他地方提供标志,也可以对其进行过滤,即:
$ cat Makefile
C_D_FLAGS :=
gui: C_D_FLAGS += $(filter -D%,$(EXTRA_FLAGS))
gui:
@echo "C_D_FLAGS: $(C_D_FLAGS)"
$ make gui
C_D_FLAGS:
$ make gui EXTRA_FLAGS="-Isomething -DFOO -m32"
C_D_FLAGS: -DFOO