Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在makfile命令中使用eval使用bash变量更改宏值_Bash_Makefile - Fatal编程技术网

如何在makfile命令中使用eval使用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)"

我在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)"
$(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