On Tue, 2022-05-17 at 17:20 -0400, Paul Smith wrote: > this says two things: first, that b and c will both be rebuilt (if > necessary) before a's recipe is started,
I guess I should be more clear about the "(if necessary)". What I mean is the same as if you had run "make b" or "make c" and make had decided it needed to rebuild those targets. In other words, the "if necessary" has nothing to do with "a" or whether "a" needs to be rebuilt. It only relates to "b" and "c" and whether they need to be rebuilt, on their own. If those targets don't exist, or are phony, or they have prerequisites which cause them to be out of date, they will be rebuilt. If they exist, are not phony, and have no prerequisites that cause them to be out of date, they will not be rebuilt. Once both "b" and "c" are completed, then make will decide whether "a" needs to be rebuilt. For that decision make will ignore any order-only prerequisites and only consider the normal prerequisites.