首页 > 解决方案 > 如何获得不重新链接的多可执行makefile

问题描述

我只是更改了我的 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 main 文件制定规则,但对共享对象文件有错误。我想知道我是否会被迫强制分离 itch 目标文件。

标签: cmakefile

解决方案


推荐阅读