makefile - 将 Fortran 模块链接在一起
问题描述
我有一个项目,我的主文件和两个模块在他们自己的文件中,例如 main.f95、mod1.f95、mod2.f95。最初,我设计我的 Makefile 以这种方式运行
# PROGRAM NAME
main = main
# MODULE NAME
mod1 = mod1
mod2 = mod2
########################################
cmplr = gfortran
flags = -g -Wall
objects1 = $(mod1).o $(mod2).o $(main).o
$(main) : $(objects1)
$(cmplr) $(flags) -o $(main) $(objects1)
$(mod1).o : $(mod1).f95
$(cmplr) -c $(mod1).f95
$(mod2).o : $(mod2).f95
$(cmplr) -c $(mod2).f95
$(main).o : $(main).f95 $(mod1).f95 $(mod2).f95
$(cmplr) -c $(main).f95
clean :
rm -f *.mod *.pcl *.pc *.o $(main) *.inc *.vo *.d *.out
这对我的初始设计很有用,但现在我的项目的复杂性已经到了 mod1 将在 mod2 和主文件中使用的地步,所以我需要重新链接文件。
我尝试对 Makefile 进行此更改
$(mod2).o : $(mod2).f95 $(mod1).f95
$(cmplr) -c $(mod2).f95
我基本上遵循了在 Makefile 中定义 main.o 编译结构的方式,并遵循了该设计,因为它看起来很相似,但它似乎对我试图将 mod1 链接到 mod2 不起作用。任何帮助或建议表示赞赏!
解决方案
如评论中所述,如果切换顺序,则 Makefile 将编译
$(mod2).o : $(mod1).f95 $(mod2).f95
$(cmplr) -c $(mod2).f95
推荐阅读
- reactjs - 如何动态添加和删除一组切换按钮 mui react js
- android - 返回活动后如何停止progressDialog?
- android - Android Compose 导航和 ViewModel 生命周期
- asp.net - ASP.net 撤消 preventDefault()
- r - 如何在不移动其余文本的情况下移动 metafor 图?
- firebase - 颤振 streamSnapshot.data.docs 不工作
- python - 为什么这个布尔表达式返回 False?
- java - 无效的握手响应 getStatus: 502 Bad Gateway
- c++ - 用clang作为CUDA编译器编译CUB库
- android - “DataBinding”如何检查 xml 中按钮的 onClick 是否为 editText isEmpty 和 setError