Makefile 利用make中的计算变量生成目标

Makefile 利用make中的计算变量生成目标,makefile,Makefile,这里有一个不起作用的例子 say-hello := greeting say-bye := farewell greeting: @echo "Hello" farewell: @echo "Bye" .SECONDEXPANSION: %-guvnah: $$(say-$*) @echo "Target was: $(say-$*)" 命令 make hello-guvnah 应该让步 hello Target was: greeting 但只显示 Targ

这里有一个不起作用的例子

say-hello := greeting
say-bye := farewell

greeting:
    @echo "Hello"

farewell:
    @echo "Bye"

.SECONDEXPANSION:
%-guvnah: $$(say-$*)
    @echo "Target was: $(say-$*)"
命令

make hello-guvnah
应该让步

hello
Target was: greeting
但只显示

Target was: greeting

如果您在先决条件中双重转义
$*
,它将在二次扩展而不是第一次扩展时被扩展:

.SECONDEXPANSION:
%-guvnah: $$(say-$$*)
    @echo "Target was: $(say-$*)"

我用
%-guvnah:$$(比如说-%)
最终还是成功了,但效果也一样。谢谢