On Tue, 2022-07-19 at 08:44 +0200, Peter Apian-Bennewitz wrote:
A rule like
%.mp4: %/%.mov
or
%.mp4: foo_%_%.bar
substitutes only the first % while looking for matching
prerequisites. - why ?
Because that's the way it was implemented, and documented, and that's
the way it's always worked...
I know of no reason other than that's how Roland (or RMS? Not sure who
created pattern rules back in the day) did it. At this point there
would be a backward-compatibility problem with trying to change it.
You can get around this if you use secondary expansion[1] capabilities:
.SECONDEXPANSION:
%.mp4: $$*/$$*/mov
or
%.mp4: foo_$$*_$$*.bar
[1] https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html