Я пытаюсь сделать Makefile для своего проекта в Фортране и сделать его многоразовым для текущих проектов.Mkefile, который я придумал после многих попыток, следующий.Дело в том, что он работает нормально в нескольких сценариях, но сейчас у меня есть эти файлы:
main.f90, initial.f90, parameters.f90, functions.f90
Первый имеет мойПрограмма и другие модули, где у меня есть подпрограммы.Дело в том, что для работы начальным параметрам нужны параметры, но Makefile решает попытаться скомпилировать исходные перед параметрами.Можно ли как-то выбрать их в правильном порядке?
vpath %.o obj
vpath %.mod mod
TOP_DIR = .
MOD_DIR = $(TOP_DIR)/mod
OBJ_DIR = $(TOP_DIR)/obj
SOURCES = $(wildcard *.f90)
OBJECTS := $(patsubst %.f90, $(OBJ_DIR)/%.o, $(SOURCES))
ALL_MODULES = $(patsubst %.f90, %.mod, $(SOURCES))
MODULES = $(filter-out main.mod, $(ALL_MODULES))
FFLAGS = -O3 -J$(MOD_DIR) -march=native -fimplicit-none -Wall -Wline-truncation -fwhole-file
.PHONY: main clean
main: main.out
./main.out
main.out: $(MODULES) $(OBJECTS)
gfortran $(FFLAGS) $(OBJECTS) -o main.out
$(OBJ_DIR)/%.o : %.f90
gfortran $(FFLAGS) $^ -c $@
%.mod: %.f90
gfortran $(FFLAGS) -c $^
clean:
rm -f $(OBJ_DIR)/*.o *.out $(MOD_DIR)/*.mod