If you want the shell to expand the variable you have to use a shell variable, not a make variable. ${Foo/Bar/OK}
is a make variable named literally Foo/Bar/OK
.
If you want to use shell variable substitution you'll have to assign that value to a shell variable:
all:
Foo='$(Foo)'; echo $${Foo/Bar/OK}
Note that we use the double-dollar $$
to escape the dollar sign so that make doesn't try to expand it.
I strongly recommend you don't add @
to your rules until you're sure they work. It's the single most common mistake I see; if people would just not use @
they could see the command make is invoking, and then they would better understand how make works.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…