Makefile: несколько% в шаблонном правиле - PullRequest
0 голосов
/ 24 марта 2020

Например, у меня есть следующая структура проекта:

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 в своем ответе на этот вопрос опубликовано:

Шаблонное правило выглядит как обычное правило, за исключением того, что его цель содержит символ '%' (ровно один из них)

Может ли кто-нибудь помочь мне решить эту проблему?

С уважением,
Усам

...