2016-11-27 1 views
1

현재 파일을 사용하여 메이크 파일을 설정하려고합니다.Makefile의 설정 파일

이 내가

NAME  = test 
OBJS  = $(SRCS_NAMES:.c=.o) 
SRCS_DIR = sources/ 

function = echo main.c test.c 
#function where i parse my file 
#i use a makefile function cause i need to pass regex as parameters 

all : $(NAME) 

parse : 
    $(eval SRCS_NAMES = $(addprefix $(SRCS_DIR), $(shell $(call function)))) 

-include parse 

%.o : %.c 
    gcc -c $< -o [email protected] 

$(NAME) : $(OBJS) 
    gcc -o $(NAME) $(OBJS) 

.o 만이 구축되지 않은 이유를 이해가 안했을 것입니다.

덕분에 당신의 시간을

답변

0

귀하의 parse 규칙은 실제 메이크 파일을 생성하므로이 규칙 처리를 끝낸 후 구문 분석을 다시 시작하지 않습니다 확인하고 OBJS는 메이크업의 첫 단계에서 비어 있지 않습니다.

당신은 당신의 현재 메이크 파일의 본문에 직접 SRCS_NAMES을 설정

parse: 
    @echo SRCS_NAMES = $(addprefix $(SRCS_DIR), $(shell $(call function))) > [email protected] 

하거나 메이크 파일을 만들 수 있습니다

SRCS_NAMES = $(addprefix $(SRCS_DIR), $(shell $(call function)))