Funktion im Makefile definieren

Ich habe eine Testansicht der Projektordnerstruktur:

TOPDIR
├── a
│   └── a.c
├── b
│   └── b.c
├── c
│   └── c.c
└── makefile

Ich habe ein Test-Makefile geschrieben:

CC        := gcc
LD        := ld

MAKE_DIR = $(PWD)
MODULES := a b c
SRC_DIR := $(addprefix ${MAKE_DIR}/,$(MODULES))

SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.c))
OBJ := $(patsubst %.c,%.o,$(SRC))

INCLUDES := $(addprefix -I,$(SRC_DIR))

vpath %.c $(SRC_DIR)

define make-goal
$1/%.o: %.c
    $(CC) $(INCLUDES) -c $< -o $@
endef

all:
    $(foreach sdir,$(SRC_DIR),$(eval $(call make-goal,$(sdir))))

während des make stoppt es einfach und zeigt:

makefile:37: *** prerequisites cannot be defined in command scripts.  Stop.

die zeile 37 ist :

$(foreach sdir,$(SRC_DIR),$(eval $(call make-goal,$(sdir))))

Was ist los mit meinem Makefile?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage