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