make:在先决条件中使用目标特定变量

use*_*840 9 makefile gnu-make

我正在尝试编写一个使用目标特定变量的先决条件的Makefile

version=

target1: override version=1
target1: package

target2: override version=2
target2: package

package: dir=package-${version}\
package: source

source: src/${version}.c
Run Code Online (Sandbox Code Playgroud)

当我运行make时,版本变量在目标包中,源为空.

我做错了什么?

Eld*_*mov 8

使用二级扩展:

.SECONDEXPANSION:

package: dir=package-$${version}
package: source

source: src/$${version}.c
Run Code Online (Sandbox Code Playgroud)

UPD.

这个答案是错误的,由于在类似问题的答案中解释的原因,建议的代码将不起作用.

TL; DR:特定目标的变量根据当前构建的目标 [ 1 ] 起作用.反过来,第二次扩展发生在读入阶段结束时 [ 2 ],然后再构建任何东西.

感谢@koniiiik指出.