标签: 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时,版本变量位于目标包中且源为空。
我做错了什么?
答案 0 :(得分:8)
使用Secondary Expansion:
.SECONDEXPANSION: package: dir=package-$${version} package: source source: src/$${version}.c
这个答案是错误的,由于answer中对类似问题的解释原因,建议的代码无效。
TL; DR:特定于目标的变量会根据当前正在构建的目标 [1]生效。反过来,在构建任何内容之前,在读入阶段 [2]结束时进行第二次扩展。
感谢@koniiiik指出。