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

How using variable of target in my makefile?

我按照Linux开发C书的例子,把目标写在我的makefile里。下面是我的 makefile:

的缩减
result:=


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

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


.PHONY: all

在shell,

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

如何在目标中return函数的值"result"?

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

在配方中分配变量也是错误的;食谱中的内容应该使用制表符缩进 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 每次扩展值时都评估赋值。