2

我正在修改代码的makefile。编译后,我看到生成了一些 *.mod 文件。在网上看,我发现它们是模块文件,但我没有看到它们的编译规则。我正在尝试更改生成这些文件的目录。我可以更改目标文件的规则,但找不到生成 *.mod 文件的规则。

查看makefile,有人可以告诉我这个文件中的一行是否生成它们或如何更改它们的目录。这是生成文件:

   # 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
4

1 回答 1

0

您可以使用 -module 编译器选项指定 .mod 文件的目标目录。

-module <directory> 

请参阅此处的 ifort 文档:

您可以使用模块路径编译器选项来指定创建模块文件的目录。如果不使用此选项,则在当前目录中创建模块文件。

于 2018-05-13T21:35:28.353 回答