On Thu, 30 Apr 2026 at 20:26, Heime <[email protected]> wrote:

> On Friday, May 1st, 2026 at 6:59 AM, Tim Murphy <[email protected]>
> wrote:
>
> > What was effective for me was a variable that one appended the directory
> to and then at the end of the makefile a for loop that ran something like
> $(eval $$(shell mkdır -p ... ) on batches of about 20 directories at a time.
>
> Right.  Followed by the rules to make your targets after making the
> directories
> present in the variable.
>
>
You have it right but I just want to correct something else where you've
not got quite the right sense and it might help you.

What you have to remember about make is that its' declarative so make reads
the whole makefile before starting to try to run rules.

What this means is that you can use $(shell mkdir blah) anywhere in the
makefile - at the top or the bottom  and it will still happen before the
first rule is expanded.

e.g. the "mkdir happens before "echo hello" in both these makefiles:

$(shell mkdir bob/a)
bob/a:
    echo "Hello" > $@

...and...

bob/a:
    echo "Hello" > $@
$(shell mkdir bob/a)

I don't present this as the most elegant pattern - it just works for me in
some situations.  David's one is quite nice.

Best regards,

Tim

Reply via email to