.ONESHELL目标(假的目标)对makefile没有影响

.ONESHELL目标(假的目标)对makefile没有影响,makefile,Makefile,在确定之后 看看,以下特殊目标似乎遵循相同的语法规则: “.导出所有变量” Simply by being mentioned as a target... 。。。 ... ... “.ONESHELL” If '.ONESHELL' is mentioned as a target... 我尝试创建以下makefile: all: @foo=bar @echo "foo=$${foo}" .PHONY: all .PHONY: .ONESHELL 通过运行它,

在确定之后

看看,以下特殊目标似乎遵循相同的语法规则:

“.导出所有变量”

 Simply by being mentioned as a target...
。。。
...
...

“.ONESHELL”

 If '.ONESHELL' is mentioned as a target...
我尝试创建以下makefile:

all:
    @foo=bar
    @echo "foo=$${foo}"

.PHONY: all
.PHONY: .ONESHELL
通过运行它,并获得:

foo=
这肯定不是“oneshell”执行的结果


因此,就语法规则而言,某些
特殊变量是否比其他变量更特殊?

。ONESHELL
应作为目标提供,而不是作为您在问题中指定的先决条件。如果指定
.ONESHELL:all
,则应获得
foo=bar
的预期输出。这就是在以下
makefile
上运行
make
时得到的结果

.ONESHELL: all
.PHONY: all

all:
    @foo=bar
    @echo "foo=$${foo}"

如果我就你的问题提供的答案是正确的,你能接受它们吗?或者发表评论让我知道什么仍然是错误的?这确实是答案。2018年,我可以确认这项工作仍然很有魅力