我只是将我的makefile更改为可以使用共享对象文件编译两个可执行文件,但是我可以找到为什么它重新链接了?
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主文件制定规则,但是共享对象文件出错。 我想知道我是否会被迫分离痒对象文件。