如何在我的makefile中使用target变量?

如何在我的makefile中使用target变量?,makefile,target,Makefile,Target,当我遵循LinuxDevelopC书籍的示例时,我在我的makefile中编写了目标。下面是我的makefile的缩略: result:= all : $(result) = $(subst a, A, how are you) echo -n "the result is :" echo $(result) .PHONY: all 在壳牌 it@ubuntu:~/luke/c_test$ make -s all makefile:5: *** e

当我遵循LinuxDevelopC书籍的示例时,我在我的
makefile
中编写了目标。下面是我的
makefile
的缩略:

result:=


all :  
$(result) = $(subst a, A, how are you)

        echo -n "the result is :"
        echo $(result)


.PHONY: all
在壳牌

it@ubuntu:~/luke/c_test$ make -s all
makefile:5: *** empty variable name.  Stop.

如何将函数的值返回到目标中的“结果”中?

您的第一个赋值是正确的。第二个赋值错误地使用了变量插值语法。它是
变量:=value
不是
$(变量):=value
;后者会尝试使用
variable
的值作为变量的名称来分配值,但在您的情况下,它是空的

在配方中分配变量也是错误的;配方中的内容应该是tab缩进的shell命令

result := $(subst a, A, how are you)

all:
    echo "the result is: $(result)"

.PHONY: all
或者甚至可以内联函数调用:

    echo "the result is: $(subst a,A,how are you)"
仅仅在一个菜谱的持续时间内分配一个变量并非完全不可能,但我猜您仍在尝试学习基本语法

可能还会注意到
:=
=
之间的区别。在GNU Make中应首选前者,除非您特别希望
Make
在每次扩展值时评估赋值