makefile .mod правило компиляции

Я изменяю make-файл кода. После компиляции я вижу, что генерируются некоторые *.mod файлы. Посмотрев онлайн, я понял, что это файлы модулей, но не вижу для них правила компиляции. Я пытаюсь изменить каталог, в котором эти файлы создаются. Я могу изменить правило для объектных файлов, но не могу найти правило, которое генерирует файлы *.mod.

Глядя на make-файл, может кто-нибудь посоветовать мне, если строка в этом файле генерирует их или как изменить их каталог. Вот make-файл:

   # GNU Makefile

   # Paths
   SDIR=./solver
   ODIR=./obj
   _CASE=./WorkCases/problem
   CASE=$(SDIR)/$(_CASE)
   TOP = .  

   FC      =       ifort

   FFLAGS          =       -fpp -O1 -DPTR_INTEGER8 -warn nousage

   # Define rule to make .f90
   $(ODIR)/%.o : $(SDIR)/%.f90 
    $(FC) -c $(FFLAGS) $< -o $@


   # set executable name
   EXEC = $(dir ${CASE})/$(basename $(notdir ${CASE})).out


   # shared global variables
   _SHARED_OBJ =    shared_modules.o main_vars.o debug_vars.o
   SHARED_OBJ = $(patsubst %,$(ODIR)/%,$(_SHARED_OBJ))

   OBJ     =  ${_SHARED_OBJ} $(_CASE).PARAMS.o 
   OBJ = $(patsubst %,$(SDIR)/%,$(_OBJ))

   MAIN_OBJ = $(ODIR)/main.o


   main : ${SHARED_OBJ} $(OBJ) $(MAIN_OBJ) 
    $(FC) ${FFLAGS} $(OBJ) $(MAIN_OBJ) -o $(EXEC) -lstdc++ -shared-intel

1 ответ

Решение

Вы можете указать каталог назначения для файлов.mod с помощью опции компилятора -module.

-module <directory> 

Смотрите документацию ifort здесь:

Вы можете использовать опцию компиляции пути модуля, чтобы указать каталог для создания файлов модуля. Если вы не используете эту опцию, файлы модуля создаются в текущем каталоге.

Другие вопросы по тегам