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

时间:2012-02-16 13:02:22

标签: 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

当我运行make时,版本变量位于目标包中且源为空。

我做错了什么?

1 个答案:

答案 0 :(得分:8)

使用Secondary Expansion

.SECONDEXPANSION:

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

source: src/$${version}.c

UPD。

这个答案是错误的,由于answer中对类似问题的解释原因,建议的代码无效。

TL; DR:特定于目标的变量会根据当前正在构建的目标 [1]生效。反过来,在构建任何内容之前,在读入阶段 [2]结束时进行第二次扩展。

感谢@koniiiik指出。