Makefile выдает ошибки, но строит нормально? - PullRequest
1 голос
/ 23 апреля 2019

Я использую make-файл для сборки нескольких программ. Вот код:

SRCS = prog1.c prog2.c prog3.c
TARG = all
CC = gcc
OPTS = -O
LIBS = -lm

OBJS = $(SRCS:.c=.o)

all: $(TARG)

$(TARG): $(OBJS)
    $(CC) -o $(TARG) $(OBJS) $(LIBS)

%.o: %.c
    $(CC) $(OPTS) -c $< -o $@

clean:
    rm -f $(OBJS) $(TARG)

Этот make-файл прекрасно генерирует три файла prog.o, но я получаю одну ошибку, которая меня смущает:

Makefile:12: recipe for target 'all' failed

Я провел довольно много поисков и не могу найти ничего, касающегося моей конкретной проблемы, поэтому мне было интересно, кто-нибудь имел какое-то представление о том, что здесь происходит. Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

С TARG = all вы получаете:

all: all

all: $(OBJS)

Назовите вашу программу как-нибудь иначе, а не all.

1 голос
/ 23 апреля 2019

У вас есть циклическая зависимость all в зависимости от all (потому что TARG расширяется до all). Граф зависимостей должен быть DAG. изменить

TARG = all

до

TARG = something
...