Итак, вот проблема: Ссылка на изображение проблемы
У меня внизу лежит мой make-файл, и он работает, но проблема не в том, что они ищут за. Я получаю сообщение об ошибке «Ваш make-файл выполняет слишком много работы, когда был изменен только mainProg. cpp:».
Когда изменяется mainProg. cpp, он перекомпилирует все, а не просто перекомпилирует mainProg. cpp. Я думаю, это может быть связано с тем, что каждый раз, когда я вызываю make, он должен воссоздавать файлы cook ie .h и снова готовить файлы ie. cpp из chomp.adt, и, поскольку он изменяется, make должен перекомпилировать его. Сложность состоит в том, что cook ie .h и cook ie. cpp должны создаваться через make-файл в соответствии с указаниями. И, насколько я знаю, невозможно создать только cook ie .h и cook ie. cpp при первом вызове make. Я не понимаю, как решить эту проблему без необходимости перекомпилировать cook ie .h и каждый раз готовить ie. cpp. Просто процитирую указания: «Ваш make-файл должен приводить только к минимально необходимому количеству шагов при изменении любого входного файла для этого процесса». поэтому я не получаю минимальных шагов в принципе. Может быть, я неправильно понимаю проблему, какие-либо предложения?
мой make-файл:
# Macro definitions for "standard" language compilations
#
# First, define special compilation flags. These may change when
# we're done testing and debugging.
CPPFLAGS=-g -DDEBUG
#
# The following is "boilerplate" to set up the standard compilation
# commands:
.SUFFIXES:
.SUFFIXES: .cpp .c .cpp .h .o
.c.o: ; gcc $(CPPFLAGS) -c $*.c
.cpp.o: ; g++ $(CPPFLAGS) -c $*.cpp
#
# Targets:
#
all: createfile mainProg.o cookie.o
g++ -g mainProg.o cookie.o
mv a.out playChomp
mainProg.o: mainProg.cpp
cookie.o: createfile cookie.cpp cookie.h
createfile:
csplit chomp.adt "/Split Here/"
mv xx00 cookie.h
mv xx01 cookie.cpp
clean:
rm *.o cookie.h cookie.cpp playChomp