Возникла проблема.
проект разросся и время компиляции сильно возросло. раньше для проекта использовал makefile, где все компилировалось «скопом» без учета того, изменен ли был файл или нет.
теперь решил сделать все по-человечески и взялся за написание makefile на пробной задаче.
читал как делать это тут http://linux.yaroslavl.ru/docs/prog/gnu_make_3-79_russian_manual.html
вот мой makefile
TARGET=hello.x
COMPILER=ifort
CFLAGS=-O3
COMPIL=$(COMPILER) -c $(CFLAGS)
OBJS= db.o hello.o hello1.o hello2.o hello3.o
EX=f90
$(TARGET): $(OBJS)
$(COMPILER) $(CFLAGS) $(OBJS) -o $(TARGET)
db.o:
$(COMPIL) db.$(EX)
hello.o: db.o hello3.o
$(COMPIL) hello.$(EX)
hello1.o: db.o
$(COMPIL) hello1.$(EX)
hello2.o: db.o
$(COMPIL) hello2.$(EX)
hello3.o: db.o
$(COMPIL) hello3.$(EX)
clean:
rm *.o rm *.mod
db.f90 - файл, в котором написан модуль с переменными для всех остальных файлов. hello3.f90 - файл, в котором написана функция, вызываемая из hello.f90
вот и все зависимости.
если я меняю что-то в файлах и пишу make, то мне выдается ответ: make: `hello.x' не требует обновления. хотя изменения внесены.
удаляю hello.x он снова пересобирается из существующих объектных файлов без перекомпилирования изменившихся файлов.
для ускорения компиляции проекта я хотел бы составить ряд зависимостей и компилировать только те файлы, которые зависят от измененного файла.
подскажите где я неправ в makefile или подскажите как добится решения проблемы.