Сам мейк
Spoiler
files=$(wildcard *.f90 dir/*.f90)
main : $(patsubst %.f90, %.o, $(files))
-------gfortran $^ -o $@
dir/%.0 : dir/%.f90
-------gfortran -c $^
clear :
-------rm -f *.o main
result : main
-------./main > result
main : $(patsubst %.f90, %.o, $(files))
-------gfortran $^ -o $@
dir/%.0 : dir/%.f90
-------gfortran -c $^
clear :
-------rm -f *.o main
result : main
-------./main > result
Spoiler
Сборка и исполнение двух программ (prog1 и prog2) из нескольких модулей (f1 f2 f3 f4), все модули в директории /dir, не текущей. Объектные файлы и программы должны создаваться в той же директории, что и модули + сделать правило оглавления этой директории.
Shell
$ make
gfortran -c dir/f4.f90
gfortran -c dir/f1.f90
gfortran -c dir/f3.f90
gfortran -c dir/f2.f90
gfortran prog1.o prog2.o dir/f4.o dir/f1.o dir/f3.o dir/f2.o -o main
gfortran: error: dir/f4.o: Нет такого файла или каталога
gfortran: error: dir/f1.o: Нет такого файла или каталога
gfortran: error: dir/f3.o: Нет такого файла или каталога
gfortran: error: dir/f2.o: Нет такого файла или каталога
make: *** [makefile:3: main] Ошибка 1