我有一个项目,其中有我的主文件和两个模块,这些文件分别位于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
这对我的最初设计有效,但是现在我的项目的复杂性到了要在mod2和主文件中使用mod1的地步,所以我需要重新链接文件。
我尝试了对Makefile的更改
$(mod2).o : $(mod2).f95 $(mod1).f95
$(cmplr) -c $(mod2).f95
从本质上讲,我遵循了在Makefile中定义main.o编译结构的方式,并遵循了该设计,因为它看起来很相似,但是对于试图将mod1链接到mod2而言,它似乎不起作用。任何帮助或建议,不胜感激!
答案 0 :(得分:0)
如注释中所述,如果顺序切换为以下方式,则Makefile将会编译
$(mod2).o : $(mod1).f95 $(mod2).f95
$(cmplr) -c $(mod2).f95