gpt4 book ai didi

variables - GNU 在多行变量声明中做出了差异

转载 作者:行者123 更新时间:2023-12-02 19:03:30 25 4
gpt4 key购买 nike

我读了这个问题,我很惊讶它不起作用:

Why GNU Make canned recipe doesn't work?

所以我自己尝试了一下,得到了同样的结果。下面是一个 makefile 示例:

define foo
bar
baz
endef

define bar =
foo
baz
endef

$(info foo: $(foo))
$(info bar: $(bar))

all:

这是运行它的输出:

$ make
foo: bar
baz
bar:
make: Nothing to be done for `all'.

这里发生了什么? GNU make manual似乎表明这两个变量声明应该相同 - 我在这里缺少什么?

编辑:

我引用的手册中的一些引文:

3.7 How make Reads a Makefile

define immediate
deferred
endef

define immediate =
deferred
endef

5.8 Defining Canned Recipes

Here is an example of defining a canned recipe:

 define run-yacc =
yacc $(firstword $^)
mv y.tab.c $@
endef

6.8 Defining Multi-Line Variables

... You may omit the variable assignment operator if you prefer. If omitted, make assumes it to be ‘=’ and creates a recursively-expanded variable...

如您所见, jar 头食谱部分明确使用=大小写。我正在使用 GNU Make 3.81。

最佳答案

来自 3.82 中的变更日志:

* read.c (do_define): Modify to allow assignment tokens (=, :=, etc.)
after a define, to create variables with those flavors.

似乎不支持在 define 语句中使用“=”

关于variables - GNU 在多行变量声明中做出了差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5033181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com