Как мне сделать Makefile для перекомпиляции только измененных файлов?

Я изо всех сил пытался заставить make скомпилировать только файлы, которые были отредактированы. Однако у меня не было большого успеха, и все файлы были перекомпилированы. Может кто-нибудь объяснить мне, почему?

Мои файлы:

main.c
a_functions.c

гдеmain.c включаетmain.h а такжеa_functions.c включаетхиджры

Вот мой make-файл:

CC=gcc
CFLAGS=-Wall -I. -c
EXEC_FILE=program1


all: program

a_functions.o: a_functions.c
a_functions.c: a.h
main.o: main.c
main.c: main.h

objects: a_functions.c main.c
    $(CC) a_functions.c main.c $(CFLAGS)

program: a_functions.o main.o
    $(CC) a_functions.o main.o -o $(EXEC_FILE)

Изменение make-файла в соответствии с предложениями, похоже, имеет ту же проблему:

all: program

a_functions.o: a_functions.c a.h
    gcc a_functions.c -c

main.o: main.c main.h
    gcc main.c -c

program: a_functions.o main.o
    gcc a_functions.o main.o -o program1

Ответы на вопрос(2)

Ваш ответ на вопрос