Makefile हर बार relinks

Oct 27 2020

मैं यह पता नहीं लगा सकता कि मेरा मेकफाइल हर बार क्यों बदल जाता है। कोई मुझे समझा सकता है?

यहाँ मेरा मेकफाइल है:

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 $@ $^