我有一个Fortran程序,使用了模块,即编译时会创建“.mod”文件。
我还编写了一个Makefile,它使用“src/”中的所有“.f90”文件,将所有创建的“.o”文件放在“obj/”中,并将二进制文件放在当前文件夹中,一切都运行良好。
现在我需要在不同的文件夹(例如“calc1/”)中对程序进行重新编译。我将Makefile复制到“calc1/”中,然后在“calc1/”中键入“make all”,所有它所做的就是链接,因为目标文件已经存在。但是,如果程序包括任何模块,则编译器需要相应的“.mod”文件存在于“calc1/”中。直到现在,我一直重新编译所有内容(“make clean all”),但随着程序的增长,这需要太多时间!
我想到的一个可能的解决方案是为二进制文件(“bin/”)单独指定一个特定的文件夹。但这不是可行的选择,因为我有排队的作业,显然需要稳定的二进制文件,而与此同时,我也尝试新功能。
因此,我正在寻找一种解决方案,可以将“.mod”文件与“.o”文件类似地处理,例如将它们放在“obj/”中。
现在我需要在不同的文件夹(例如“calc1/”)中对程序进行重新编译。我将Makefile复制到“calc1/”中,然后在“calc1/”中键入“make all”,所有它所做的就是链接,因为目标文件已经存在。但是,如果程序包括任何模块,则编译器需要相应的“.mod”文件存在于“calc1/”中。直到现在,我一直重新编译所有内容(“make clean all”),但随着程序的增长,这需要太多时间!
我想到的一个可能的解决方案是为二进制文件(“bin/”)单独指定一个特定的文件夹。但这不是可行的选择,因为我有排队的作业,显然需要稳定的二进制文件,而与此同时,我也尝试新功能。
因此,我正在寻找一种解决方案,可以将“.mod”文件与“.o”文件类似地处理,例如将它们放在“obj/”中。
mod
文件?它们是否有可预测的名称(例如foo.f90
=>foo.mod
)?您是否可以通过编译器参数控制它们的名称? - Betamod
文件会在当前目录中创建,并按照文件中给定的名称命名,例如,如果foo.f90
包含module bar
,则该文件将被命名为bar.mod
。在编译过程中无法控制此名称,因为该名称在其他文件中使用,即在main.f90
中我写use bar
。 - Jost