我正在尝试编译一个简单的 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
问题是$(SRC:.c =.o)
由于那个空格而不起作用(没有SRC
以".c "
(包括最后一个空格)结尾的名称)。
应该是$(SRC:.c=.o)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句