Например, у меня есть следующая структура проекта:
inc
|__ Header.h
src
|__ App_main.c
src-gen
|__ App_1_1_header.c
|__ App_1_2_header.c
|__ App_2_1_header.c
|__ App_2_2_header.c
|__ App_2_3_header.c
и этот make-файл:
######## define include files #########
INCLUDES := $(wildcard inc/*.h)
######## define paths to source and include files #########
vpath %.c src
vpath %.c src-gen
vpath %.h inc
######## define src folders ##########
SRC_DIR := src
SRC_GEN_DIR := src-gen
######## define source files #########
MAIN_SRC := src/App_main.c
APP_SRC := $(shell find $(SRC_GEN_DIR) -name "App_*.c")
######## define object files #########
MAIN_OBJ := App_main.o
APP_OBJ := $(pathsubst %.c,%.o, $(APP_SRC))
%.o : %.c $(INCLUDES)
@echo '# Compiling: $@.c'
$(COMPILE.c) $(OUTPUT_OPTION) $<
@echo ' '
app_%_%: $(MAIN_OBJ) App_%_%_Appheader.o
@echo '# Building target: $@'
$(LINK.c) $^ $(LDLIBS) $(OUTPUT_OPTION)
В случае вышеупомянутой структуры проекта мне нужны следующие цели:
app_1_1 : App_main.o App_1_1_Header.o
app_1_2 : App_main.o App_1_2_Header.o
app_2_1 : App_main.o App_2_1.Header.o
and so on..
Как Paljas
в своем ответе на этот вопрос опубликовано:
Шаблонное правило выглядит как обычное правило, за исключением того, что его цель содержит символ '%' (ровно один из них)
Может ли кто-нибудь помочь мне решить эту проблему?
С уважением,
Усам