如果程序(或库)之前尚未构建,我使用命令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)
命令?
感谢
答案 0 :(得分:1)
请参阅GNU制作手册的Errors in Recipes部分,了解如何在制作级别处理此问题。
但是,在这种情况下,您还可以在rm
级别处理此问题。 -f
的{{1}}标志将导致它忽略不存在的文件(以及不提示删除,基本上所有其他方式都不会停止或返回失败......)。
据说,在新的构建之前,通常不需要清理它。当一个makefile被错误地写入(就像你的那样)时,通常认为有必要不正确地教导源和目标之间的依赖关系(和/或根本不使用目标,并且总是像你一样从头开始构建)。