Makefile重新链接错误

我试图让这个makefile重新链接,而不是重新编译未修改的unessecarily文件。 “libft”是我的库,没有任何错误。 在做的时候我有错误

make 

是:

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

我的makefile是:

 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 $@ -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未被调用

鉴于存在这些变量:

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

我猜你的源文件实际上存在于srcs/而你正在构建你的目标文件. 所以这个模式规则:

 %.o: %.c 

当尝试匹配main.o将找不到main.c因为该文件确实是srcs/main.c 由于该模式不匹配,因此不考虑规则本身,并且由于未找到其他规则,因此会出现错误。

相反,尝试:

 %.o : $(SRC_PATH)/%.c $(CC) -o $@ -c $< $(FLAGS)