Я новичок.Я попытался запустить пример make, как показано ниже.
CC=gcc
CFLAGS=-I.
OBJ = hellofunc.o hellomake.o
SRC = hellofunc.c hellomake.c
DEPS := $(OBJ:.o=.d)
%.o: %.c
$(CC) -MT $@ -MMD -MP -MF $(patsubst %,%.d,$(basename $@)) -o $@ -c $(CFLAGS) $<
test:
@echo "inside test target"
hellomake: hellomake.o hellofunc.o
$(CC) -o $@ $^
include $(DEPS)
Вывод:
inside test target
Согласно инструкции make, он говорит, что По умолчанию make запускается с первой цели(не цели, имена которых начинаются с '.') .Так что в этом случае первая цель - %.o: %c
, верно?Почему сначала не выполняется это правило?У меня нет объектных файлов в моем каталоге.make должен проверить отсутствие объектных файлов и попытаться собрать с файлами C, используя первое правило, верно?