On Mon, 2023-10-02 at 11:48 -0700, Bahman Movaqar wrote:
> my-target : foo
> my-target :
>         @echo 'my-target: $$(<) is $(<)'

This is an unusual way to construct this rule.  Normally it would be:

  my-target : foo
            @echo 'my-target: $$< is $<'

whereupon the value of $< is reliably "foo" regardless of anything else
in the makefile.

> That brings me to the natural question:  why would anyone ever use
> `$(<)'?  In other words, what is an appropriate usecase for that
> variable?

You have to use automatic variables, including $<, when you write
implicit rules.  There is no other option.

I agree that if you're writing a rule with a recipe and you DO NOT
provide at least one prerequisite, it's probably a bad idea to use $<
in the recipe since you have no idea what it will be.


Reply via email to