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)