【发布时间】:2021-06-04 07:27:39
【问题描述】:
我正在尝试编译一个简单的 C 函数来处理两个整数堆栈并使用特定规则对它们进行排序。 我之前编译没有问题,但我不能了。并收到此错误消息:
make: *** No rule to make target `objs/main.c', needed by `push_swap'. Stop.
下面是我的代码;
NAME = push_swap
SRC_DIR = srcs
SRC = main.c \
instructions/swap.c \
instructions/rotate.c \
instructions/push.c \
instructions/reverse.c \
utils/check_duplicate.c \
utils/chunk_clear.c \
utils/chunk.c \
utils/ft_error.c \
utils/ft_split.c \
utils/highest.c \
utils/init_stack.c \
utils/is_sorted.c \
utils/lowest.c \
utils/num.c \
utils/tab.c \
sort/five.c \
sort/small.c \
sort/sorter.c \
OBJ_DIR = objs
OBJ = $(addprefix $(OBJ_DIR)/, $(SRC:.c =.o))
HEADER_FOLDER = inc
CC = gcc
CFLAGS = -Werror -Wextra -Wall -I$(HEADER_FOLDER) -g
RM = rm -rf
all: $(NAME)
$(OBJ_DIR):
@mkdir -p $(OBJ_DIR)
@mkdir -p $(OBJ_DIR)/operations
@mkdir -p $(OBJ_DIR)/sorters
@mkdir -p $(OBJ_DIR)/utils
$(NAME): $(OBJ_DIR) $(OBJ)
@cd libft && make && cd ../
@echo "making push_swap ... \033[32mok\033[0m"
@$(CC) $(CFLAGS) -o $(NAME) $(OBJ) $(HEADER)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
@echo "Compiling ... $@ \033[32mok\033[0m"
@$(CC) $(CFLAGS) -c $< -o $@
clean:
@cd libft && make clean && cd ../
@echo "Removing object files ... \033[32mok\033[0m"
@$(RM) $(OBJ) $(OBJ_DIR)
fclean:
@cd libft && make fclean && cd ../
@echo "Removing files and program ... \033[32mok\033[0m"
@$(RM) $(NAME) $(OBJ) $(OBJ_DIR)
re: fclean all
.PHONY: all re fclean clean
【问题讨论】:
-
欢迎来到 Stack Overflow。请阅读the help pages,接受SO tour,阅读How to Ask,以及this question checklist。最后请阅读What should I do when someone answers my question?