Eu estou tentando implementar um makefile para o meu projeto C que possui uma estrutura de diretórios da seguinte forma:
PROJECT_FOLDER:
folder1
folder2
folder // n number of folders
main.c
FOLDER1:
subfolder1
subfolder // n number of subfolders
A subpasta 1 pode ter mais subpastas, etc. etc.
Eu não pretendo ser burro com a minha estrutura de diretórios, o mais profundo que eu posso ir é 1-2 MAIO 3.
Até agora eu tenho:
# A Makefile to build our First_Game_2 project
dirs = * */parse
PROJECT = main
HEADERS = $(PROJECT).h
OBJ = $(foreach dirz, $(dirs), \
\
$(patsubst %.c,%.o,$(wildcard $(dirz).c)) \
\
)
C99 = gcc -std=c99
CFLAGS = -Wall -pedantic -Werror
$(PROJECT) : $(OBJ)
$(C99) $(CFLAGS) -o $(PROJECT) $(OBJ)
%.o : %.c $(HEADERS)
$(C99) $(CFLAGS) -c $<
clean:
rm -f $(PROJECT) $(OBJ)
Meu problema é se parse
contiver uma subpasta, digamos test
, para fornecer a estrutura
PROJECT_FOLDER/parse/test
Nesse caso, nada é retornado de
$(foreach dirz, $(dirs), \
\
$(patsubst %.c,%.o,$(wildcard $(dirz).c)) \
\
)
Eu testei a saída da função com o seguinte makefile
# A Makefile to build our First_Game_2 project
dirs = * */parse
PROJECT = main
HEADERS = $(PROJECT).h
OBJ =
C99 = gcc -std=c99
CFLAGS = -Wall -pedantic -Werror
$(foreach dirz, $(dirs), \
\
$(patsubst %.c,%.o,$(wildcard $(dirz).c)) \
\
)
Que, dada uma estrutura de:
dirs = * */parse */parse/test
Produz uma saída de:
main.o parse/parse.o
Ignorando */parse/test
Por que esse é o caso, o que posso fazer para corrigir minha atribuição de OBJ para reconhecer */parse/test
ou de outra forma?