2016-11-21 37 views
0

このメイクファイルの再リンクを取得しようとしていて、修正されていない不必要なファイルを再コンパイルしていません。 "libft"は私のライブラリであり、何の誤りもありません。メイクファイルの再リンクエラー

make 

をやったときに私が午前エラーは次のとおりです。

make: *** No rule to make target `main.o', needed by `ft_printf'. Stop. 

私のメイクファイルは、次のとおりです。

NAME = ft_printf 

SRC = main.c\ 
    ft_printf.c\ 
    parser_main.c\ 
    utils.c\ 
    debug_funcs.c 

OBJ = $(SRC:.c=.o) 

SRC_PATH = srcs/ 

SRC_POS = $(addprefix $(SRC_PATH),$(SRC)) 

INC = -I includes 

LIBFT = libft/libft.a 

CC = gcc 

FLAGS = -Wall -Wextra -Werror 

all: $(NAME) 

$(NAME): $(OBJ) 
    $(CC) $(FLAGS) $(OBJ) -o $(NAME) $(LIBFT) 

%.o: %.c 
    $(CC) -o [email protected] -c $< $(FLAGS) 
$(LIBFT): 
    make -C ./libft/ 

clean: 
    rm -f $(OBJ) 
    make clean -C ./libft/ 

fclean: clean 
    rm -f $(NAME) 
    make fclean -C ./libft/ 

re: fclean all 

任意のアイデア?私はそれを把握することはできませんし、私はそれがだと思うので%の.o:%cは

答えて

0

と呼ばれていないこれらの変数の存在を考える:

SRC_PATH = srcs/  
SRC_POS = $(addprefix $(SRC_PATH),$(SRC)) 

私は推測していること、実際のソースファイルあなたは.したがって、このパターンルールでは、あなたのオブジェクトファイルを構築しているのに対し、srcs/に住ん:

%.o: %.c 

main.oは、そのファイルが本当にsrcs/main.cされているのでmain.cを見つけることができません一致しようとするとき。そのパターンは一致しないので、ルール自体は考慮されず、他のルールが見つからないため、エラーが発生します。

代わりに、試してみてください。Seluj78 @

%.o : $(SRC_PATH)/%.c 
    $(CC) -o [email protected] -c $< $(FLAGS) 
+0

をどういたしましてとSOへようこそ! 「誰かが答えるときに何をするか」を参照してください(http://stackoverflow.com/help/someone-answers) – Barry