bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Possible bug with pattern-specific variables


From: Bahman Movaqar
Subject: Re: Possible bug with pattern-specific variables
Date: Wed, 27 Sep 2023 07:51:53 -0700
User-agent: Evolution 3.50.0

I certainly tried out your snippet the first time before replying 🙂

To my mind, what you're missing is the fact that `build/% : BAR +=' is
evaluated as part of `build/release'.

It is no different than the following snippet from the manual:

🙶
objects = foo.o bar.o
foo.o : defs.h
bar.o : defs.h test.h
$(objects) : config.h
🙸

In the above snippet, last line is not recipe for for `$(objects)'. 
However, it does mutate its prerequisites.

In the same vein, line #2 of your snippet, while not being a recipe for
`build/release', updates its prerequisites (in this case just a
variable.)

See https://www.gnu.org/software/make/manual/make.html#Multiple-Rules

Does that make sense?

-- 
Bahman

Join the chatter on Matrix:
         🌐 https://matrix.to/#/#.mk:matrix.org
      
Subscribe to the Lemmy community:
         🌐 https://lemmy.ml/c/makefile




On Wed, 2023-09-27 at 16:35 +0200, Markus F.X.J. Oberhumer wrote:
> I think you did not get what I'm complaining about. Please
> try this 3-line Makefile:
> 
> ### BEGIN
> FOO +=
> build/%: BAR +=
> build/release: ; @echo "FOO='$(FOO)' BAR='$(BAR)'"
> ### END
> 
> And run "make FOO=X BAR=Y"
> 
> BAR is now **two** Y aka 'Y Y' which does not make any sense.
> 
> ~Markus
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]