Я просто изменяю свой make-файл, чтобы скомпилировать два исполняемых файла с общим объектным файлом, который он работает, но я могу выяснить, почему он перезапускает?
NAME2 = checker
SRC_PATH1 := src/push_swap
SRC_PATH2 := src/checker
OBJ_PATH := obj
INC_PATH := include
LIB_PATH := libft
SRC_NAME1 := sort_pile.c \
sort_work.c \
SRC_NAME2 := parse.c \
free.c \
pile_list.c \
debug.c \
swap.c \
push.c \
rotate.c \
reverse_rotate.c \
move_gestion.c \
INC_NAME := push_swap.h
LIB := $(LIB_PATH)/libft.a
LIB_LINK := -L $(LIB_PATH) -lft
OBJ1 := $(addprefix $(OBJ_PATH)/,$(SRC_NAME1:.c=.o))
OBJ2 := $(addprefix $(OBJ_PATH)/,$(SRC_NAME2:.c=.o))
INCS := -I $(LIB_PATH)/$(INC_DIR) -I $(INC_DIR)
CC := gcc
CFLAGS := -Wall -Wextra -Werror
all: $(LIB) $(NAME1) $(NAME2)
$(LIB):
make -C $(LIB_PATH)
$(NAME1): $(OBJ1) $(OBJ2) obj/push_swap.o
$(CC) $(CFLAGS) obj/push_swap.o $(OBJ1) $(OBJ2) $(LIB) -o $@
$(NAME2): $(OBJ2) obj/checker.o
$(CC) $(CFLAGS) obj/checker.o $(OBJ2) $(LIB) -o $@
$(OBJ_PATH)/%.o: $(SRC_PATH1)/%.c $(INC_PATH)/* obj
$(CC) $(CFLAGS) -o $@ -c $< -I $(INC_PATH)/
$(OBJ_PATH)/%.o: $(SRC_PATH2)/%.c $(INC_PATH)/* obj
$(CC) $(CFLAGS) -o $@ -c $< -I $(INC_PATH)/
obj:
mkdir -p obj
clean:
rm -rf $(OBJ) $(LIB_PATH)/*.o
rm -rf obj
fclean: clean
rm -f $(NAME2)
make -C $(LIB_PATH) fclean
re: fclean all
.PHONY: all fclean clean re norme
Я уже пытался создать правило для основных файлов itch, но у меня была ошибкадля общих объектных файлов.Мне интересно, если бы я был вынужден заставить отдельный файл объекта зуд.