All,

Upon reading the official help for .SECONDEXPANSION: here,
https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html,
My simple makefile below isn't doing what I expect - it could be from my
weird `$(eval ...)` use...

I'm expecting to be able to append to $(OBJECTS) in the `foo` rule and have
the final value be used in the `all` target. I know this might seem
anti-idiomatic as I see no reference for this technique anywhere.

---- Begin Makefile ----

.PHONY: foo all
.SECONDEXPANSION:

OBJECTS := obj/first

all: foo $$(OBJECTS) ; $(info OBJECTS=$(OBJECTS))

foo:
    @$(eval OBJECTS += obj/second)
    @echo "in foo, OBJECTS=$(OBJECTS)"

obj/%:
    @echo "obj rule => $@"

---- End Makefile ----

---- Begin Output ----

$ make
in foo, OBJECTS=obj/first obj/second
obj rule => obj/first
OBJECTS=obj/first obj/second

---- End Output ----

---- Begin Expected Output ----

$ make
in foo, OBJECTS=obj/first obj/second
obj rule => obj/first
obj rule => obj/second
OBJECTS=obj/first obj/second

---- End Expected Output ----

-- 
Anthony G. Clark
_______________________________________________
Help-make mailing list
Help-make@gnu.org
https://lists.gnu.org/mailman/listinfo/help-make

Reply via email to