Makefile:如果尚未构建程序,则fclean会出错

时间:2015-06-01 14:38:01

标签: makefile

如果程序(或库)之前尚未构建,我使用命令make re时有2个makefile崩溃,因为fclean调用NAME = lib.a CC = cc CFLAGS = -Wall -Wextra -Werror SRC = *.c OBJ = $(SRC:.c=.o) INC = Includes all: $(NAME) $(NAME): @$(CC) -I $(INC) $(CFLAGS) -c $? $(SRC) @ar rc $(NAME) $? $(OBJ) @ranlib $(NAME) clean: @/bin/rm -f $(OBJ) fclean: clean @/bin/rm $(NAME) re: fclean all .PHONY: all clean fclean re ,这应该删除文件如果找不到文件则崩溃。这是库的makefile之一

rm: lib.a: No such file or directory
make: *** [fclean] Error 1

当我调用make re时,lib.a仍然不存在,我得到了

fclean

如果找不到lib.a,有没有让它忽略s = r"""<paste>""" json.load(s) 命令?

感谢

1 个答案:

答案 0 :(得分:1)

请参阅GNU制作手册的Errors in Recipes部分,了解如何在制作级别处理此问题。

但是,在这种情况下,您还可以在rm级别处理此问题。 -f的{​​{1}}标志将导致它忽略不存在的文件(以及不提示删除,基本上所有其他方式都不会停止或返回失败......)。

据说,在新的构建之前,通常不需要清理它。当一个makefile被错误地写入(就像你的那样)时,通常认为有必要不正确地教导源和目标之间的依赖关系(和/或根本不使用目标,并且总是像你一样从头开始构建)。