Makefile เชื่อมต่อทุกครั้ง

Oct 27 2020

ฉันคิดไม่ออกว่าเหตุใด Makefile ของฉันจึงลิงก์ซ้ำทุกครั้ง ใครช่วยอธิบายให้ฉันฟังหน่อย

นี่คือ Makefile ของฉัน:

SRCS    = ${wildcard ./srcs/*.c} OBJS = ${SRCS:.c=.o}
INCL    = includes
CC      = gcc
CFLAGS  = -Wall -Wextra -Werror
NAME    = BSQ

.c.o :
            ${CC} -I ${INCL} ${CFLAGS} -c $< -o ${<:.c=.o} all : ${OBJS}
            ${CC} -o ${NAME} ${OBJS} clean : rm -f ${OBJS}
fclean :    clean
            rm -f ${NAME}
re :        fclean all

คำตอบ

3 Barmar Oct 27 2020 at 14:53

เนื่องจากallเป้าหมายไม่ได้สร้างไฟล์ชื่อallจึงmakeไม่รู้ว่าได้ทำไปแล้ว

คุณควรallขึ้นอยู่กับ${NAME}แล้วเพิ่มเป้าหมายสำหรับ${NAME}ที่ดำเนินการเชื่อมโยง

all: ${NAME} ${NAME}: ${OBJS} ${CC} -o $@ $^