如何在我的 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
;后者会尝试使用 variable
的 value 作为要为其分配值的变量的名称,但在您的情况下,它是空的。
在配方中分配变量也是错误的;食谱中的内容应该使用制表符缩进 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
每次扩展值时都评估赋值。
我按照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
;后者会尝试使用 variable
的 value 作为要为其分配值的变量的名称,但在您的情况下,它是空的。
在配方中分配变量也是错误的;食谱中的内容应该使用制表符缩进 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
每次扩展值时都评估赋值。