gpt4 book ai didi

makefile - Fortran 生成文件

转载 作者:行者123 更新时间:2023-12-04 05:46:06 28 4
gpt4 key购买 nike

我有以下问题。
我有一组 Fortran90 源文件,其中大部分包含模块。
我必须用它们构建一个静态库(.a),并且我使用了以下 Makefile。

.SUFFIXES: .o .c .f90 .f .mod

DEPSF = tt_f90m, bt
include Makefile.in #Contains compiler flags (CC, FORT, etc.)
OBJS = $(DEPSF:,=.o).o

mytt.a: $(OBJS)
ar rc mytt.a $(OBJS)
.f90.o:
$(FORT) -c $<

它工作正常,但它有一个烦人的功能:如果我编辑任何源文件,mytt.a 目标不会重建。只有当我删除所有 .o 和 .mod 文件时,它才会发生。的输出
使-d

如下:
....


Considering target file `tt_f90m.o'.
....
Found an implicit rule for `tt_f90m.o'.
Considering target file `tt_f90m.mod'.
Looking for an implicit rule for `tt_f90m.mod'.
....
No implicit rule found for `tt_f90m.mod'.
Finished prerequisites of target file `tt_f90m.mod'.
No need to remake target `tt_f90m.mod'.
Finished prerequisites of target file `tt_f90m.o'.
Prerequisite `tt_f90m.mod' is older than target `tt_f90m.o'.
No need to remake target `tt_f90m.o'.

我怎样才能正确编写这个makefile?

最佳答案

事实上,我有这个问题的答案。
问题出在 Fortran90 上。
它具有 .mod 文件作为依赖项,因此如果源文件发生更改,则 .mod
文件不是,并且文件不会重新编译。解决方案非常简单。
一开始只写

.SUFFIXES:
.SUFFIXES: .c .f .f90 .F90 .o

仅此而已!

关于makefile - Fortran 生成文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10667901/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com