I'm trying to write a Makefile where prerequisites using target specific variables
version=
target1: override version=1
target1: package
target2: override version=2
target2: package
package: dir=package-${version}\
package: source
source: src/${version}.c
When i run make the version variable is in target package and source empty.
What I'm doing wrong?
Use Secondary Expansion:
.SECONDEXPANSION:
package: dir=package-$${version}
package: source
source: src/$${version}.c
UPD.
This answer is wrong, the suggested code won't work because of the reasons explained in the answer to a similar question.
TL;DR: Target-specific variables take their effect based on the target that make is currently building [1]. Second expansion, in turn, takes place right at the end of the read-in phase [2], before building anything.
Thanks to @koniiiik for pointing out.