Я учусь писать make-файлы и хотел бы создать make-файл, который может создавать несколько целей из нескольких источников в соответствии с заданным аргументом.
Вот что я попробовал:
# Compiler and others
CC=gcc
# Flags
CFLAGS = -g -c -Wall -DLOGFILE -D_REENTRANT
target1_EXEC = ../build/target1
target2_EXEC = ../build/target2
target1_SRC = ../source/target1
target2_SRC = ../source/target2
target1: TARGET=target1
target1: all
target2: TARGET=target2
target2: all
EXEC=$($(TARGET)_EXEC)
SRC=$($(TARGET)_SRC)
OBJ=$(SRC:.c=.o)
all: $(EXEC)
$(EXEC): $(OBJ)
$(CC) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(LIBS)
%.o: %.c
$(CC) -o $@ -c $< $(CFLAGS)
Я хотел бы вызвать make-файл с целью в качестве аргумента:
makefile target1
Но тогда кажется, что он не находит подзадачу:
make: Nothing to be done for 'target1'.
Что я делаю не так?