fortran Makefile

## subroutine and function source files
SRC_FILES = qromb.F90 polint.F90 trapzd.F90
## module files
MDL_FILES = para.F90 nrutil.F90 nr.F90
OBJS = ${SRC_FILES:.F90=.o}
MOD = ${MDL_FILES:.F90=.o}
## main file
BIN = xmain

# compiler
F90 = gfortran

##顺序非常重要,决定了依赖关系
OBJECTS =$(MOD) $(OBJS) $(BIN).o
SOURCES = $(SRC_FILES) $(MDL_FILES) $(BIN).F90

## final target: note the "tab" in the command line
$(BIN): $(OBJECTS)
       $(F90)  -o $(BIN) $(OBJECTS)
$(OBJS): $(SRC_FILES)
       $(F90) -c $(SRC_FILES)
$(MOD): $(MDL_FILES)
       $(F90) -c $(MDL_FILES)
                                                                                           
$(BIN).o: $(SOURCES)
       $(F90) -c $(BIN).F90
clean:
       rm -f *.o *.mod *.out $(BIN)

抄来的,科学网—fortran编程之用Makefile编译 - 李亚平的博文

突然又要在服务器上搞Fortran,我可真醉了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Make命令   在make命令后不仅可以出现宏定义,还可以跟其他命令行参数,这些参数指定了需要编译的目标文件。其标准形式为:   target1 [target2 …]:[:][dependent1 …][;commands][#…]   [(tab) commands][#…]   方括号中间的部分表示可选项。Targets和dependents当中可以包含字符、数字、句点和"/"符号。除了引用,commands中不能含有"#",也不允许换行。   在通常的情况下命令行参数中只含有一个冒号":",此时command序列通常和makefile文件中某些定义文件间依赖关系的描述行有关。如果与目标相关连的那些描述行指定了相关的command序列,那么就执行这些相关的command命令,即使在分号和(tab)后面的aommand字段甚至有可能是NULL。如果那些与目标相关连的行没有指定command,那么将调用系统默认的目标文件生成规则。   如果命令行参数中含有两个冒号"::",则此时的command序列也许会和makefile中所有描述文件依赖关系的行有关。此时将执行那些与目标相关连的描述行所指向的相关命令。同时还将执行build-in规则。   如果在执行command命令时返回了一个非"0"的出错信号,例如makefile文件中出现了错误的目标文件名或者出现了以连字符打头的命令字符串,make操作一般会就此终止,但如果make后带有"-i"参数,则make将忽略此类出错信号。   Make命本身可带有四种参数:标志、宏定义、描述文件名和目标文件名。其标准形式为:   Make [flags] [macro definitions] [targets]   Unix系统下标志位flags选项及其含义为:   -f file  指定file文件为描述文件,如果file参数为"-"符,那么描述文件指向标准输入。如果没有"-f"参数,则系统将默认当前目录下名为makefile或者名为Makefile的文件为描述文件。在linux中, GNU make 工具在当前工作目录中按照GNUmakefilemakefileMakefile的顺序搜索 makefile文件。   -i   忽略命令执行返回的出错信息。   -s   沉默模式,在执行之前不输出相应的命令行信息。   -r   禁止使用build-in规则。   -n   非执行模式,输出所有执行命令,但并不执行。   -t   更新目标文件。   -q   make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息。   -p   输出所有宏定义和目标文件描述。   -d   Debug模式,输出有关文件和检测时间的详细信息。   linux下make标志位的常用选项与Unix系统中稍有不同,下面我们只列出了不同部分:   -c dir   在读取 makefile 之前改变到指定的目录dir。   -I dir   当包含其他 makefile文件时,利用该选项指定搜索目录。   -h   help文挡,显示所有的make选项。   -w   在处理 makefile 之前和之后,都显示工作目录。   通过命令行参数中的target ,可指定make要编译的目标,并且允许同时定义编译多个目标,操作时按照从左向右的顺序依次编译target选项中指定的目标文件。如果命令行中没有指定目标,则系统默认target指向描述文件中第一个目标文件。
Makefile中,参数化可以通过使用命令行参数和变量来实现。其中,命令行参数可以通过使用"-C DIR"指定目录,进入到目录DIR后执行make命令;"-f=FILE"或"--file=FILE"或"--makefile=FILE"可以指定特定的Makefile文件进行执行;"-I DIR"或"--include-dir=DIR"可以指定包含Makefile的搜索目录,使得在Makefile中使用"include"时可以在DIR目录下进行搜索。 另外,可以使用变量来实现参数化。在Makefile中,可以定义变量来存储常用的参数或目录路径,以便在整个Makefile中重复使用。通过在Makefile中使用变量,可以提高可维护性和灵活性。变量可以通过使用"="或":="进行赋值,然后在后续的规则中使用。在Makefile中使用变量可以将参数与具体的规则分离,使得Makefile更加灵活和可配置。 此外,还可以使用include指令来引用其他的Makefile文件,类似于C语言的#include。当在Makefile中遇到include指令时,会暂停当前Makefile的读取,去读取include指定的文件,待读取结束后再继续读取当前Makefile文件的内容。这样可以将参数化的内容存储在单独的Makefile文件中,方便维护和管理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [基础知识:篇4-make工具与Makefile文件概念](https://blog.csdn.net/weixin_42645653/article/details/116157770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [makemake:为模块化Fortran程序生成Makefile](https://download.csdn.net/download/weixin_42127783/16731817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值