help-make
[Top][All Lists]
Advanced

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

Variable expansion question


From: Sébastien Hinderer
Subject: Variable expansion question
Date: Mon, 24 Oct 2022 14:10:32 +0200

Dear all,

There is something about variable expansion that I do not understandf.
Consider the following Makefile:

all: $(PROGRAMS)

define BUILD_MACRO
$(1): $$($$(basename $$(notdir $(1)))_OBJECTS:=.o)
        @echo Building $$@ from $$^
endef # BUILD_MACRO

PROGRAMS = tools/prog.exe

prog_OBJECTS = progmod1 progmod2

$(foreach PROGRAM, $(PROGRAMS),\
  $(eval $(call BUILD_MACRO,$(PROGRAM))))

If progmod1.o and progmod2.o exist, then running `make tools/prog.exe` displays:

Building tools/prog.exe from progmod1.o progmod2.o

Which is what I expect.

However, if prog_OBJECTS is defined after the call to foreach rather
than before, then the same command ran in the same context says:

Building tools/prog.exe from

In other words the evaluated list of prerequisites is empty and I am
wondering why this is so and whether there would be a way to defiine
BUILD_MACRO so that therelative positions of its invocation andthe
definition of the _OBJECTS variables does not matter.

Many thanks in advance for your lights,

Sébastien.



reply via email to

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