Я впервые использую Makefile. Я должен был написать один для моего школьного задания и столкнулся с ошибкой «make: Circular PhotoLab <- зависимость PhotoLab пропала». Я попытался исследовать, как я обнаружил <a href="https://stackoverflow.com/questions/24904906/make-circular-dependency-dropped"> make: круговая зависимость удалена и Make: круговая зависимость удалена c ++ , и, насколько я понимаю, круговая зависимость - это когда вы создаете что-то от себя, поэтому он будет работать вечно, если не остановится Если моя логика верна, я создаю свои файлы .o из моих файлов .c & .h, а затем связываю свои файлы .o для создания своих исполняемых файлов. Поэтому я не очень понимаю, почему я получаю ошибку циклической зависимости. Где моя логика идет не так?
просто для пояснения на этапе компоновки, у меня есть файл с именем libfilter.a, который только что сделан из DIPs.o и Advanced.o
#variable definitions
CC = gcc
DEBUG = -g
CFLAGS = -Wall -ansi -std=c99 $(DEBUG) -c
LFLAGS = -Wall $(DEBUG)
#convenience targets
all: PhotoLab PhotoLabTest
PhotoLab: PhotoLab
PhotoLabTest: PhotoLabTest
clean:
rm -f *.o
rm -f PhotoLab
rm -f PhotoLabTest
rm -f bw.ppm
rm -f edge.ppm
rm -f shuffle.ppm
rm -f brightness.ppm
rm -f hmirror.ppm
rm -f hue.ppm
test: PhotoLab
./PhotoLab
#compilation rules
PhotoLab: FileIO.o Advanced.o DIPs.o Main.o
$(CC) $(LFLAGS) FileIO.o Main.o -lm -lfilter -L. -o PhotoLab
PhotoLabTest: FileIO.o Advanced.o DIPs.o Main2.o
$(CC) $(LFLAGS) FileIO.o Main2.o -lm -lfilter -L. -o PhotoLabTest
Main.o: PhotoLab.c Constants.h FileIO.h DIPs.h Advanced.h
$(CC) $(CFLAGS) PhotoLab.c -o Main.o
Main2.o: PhotoLab.c Constants.h FileIO.h DIPs.h Advanced.h
$(CC) -Wall -ansi -std=c99 -DDEBUG -c PhotoLab.c -o Main2.o
FileIO.o: FileIO.c FileIO.h Constants.h
$(CC) $(CFLAGS) FileIO.c -o FileIO.o
DIPs.o: DIPs.c DIPs.h Constants.h
$(CC) $(CFLAGS) DIPs.c -o DIPs.o
Advanced.o: Advanced.c Advanced.h Constants.h
$(CC) $(CFLAGS) Advanced.c -o Advanced.o