具有不同源类型的Makefile

具有不同源类型的Makefile,makefile,fortran,Makefile,Fortran,我正在尝试编写一个makefile,用于编译一个包含扩展名为.f和.f90的源文件的程序。我有编译对象的规则: %.o: %.f90 $(FC) $(FFLAGS) -c $< -o $(OBJ)/$@ %.o:%.f90 $(FC)$(FFLAGS)-c$

我正在尝试编写一个makefile,用于编译一个包含扩展名为
.f
.f90
的源文件的程序。我有编译对象的规则:

%.o: %.f90
       $(FC) $(FFLAGS) -c $< -o $(OBJ)/$@
%.o:%.f90
$(FC)$(FFLAGS)-c$<-o$(OBJ)/$@

我如何扩展它来处理
.f
文件?

您需要有两个单独的规则:一个用于
.f
文件,另一个用于
.f90
文件。例如:

TARGET := a.out
OBJFILES := foo.f bar.f90
OBJ := ./obj

%.o: %.f90
    $(FC) $(FFLAGS) -c $< -o $(OBJ)/$@

%.o: %.f
    $(FC) $(FFLAGS) -c $< -o $(OBJ)/$@

%(TARGET): $(OBJFILES)
    $(FC) $(FFLAGS) -o $@ $(addprefix $(OBJ)/,$(OBJFILES))
TARGET:=a.out
OBJFILES:=foo.f bar.f90
对象:=/对象
%.o:%.f90
$(FC)$(FFLAGS)-c$<-o$(OBJ)/$@
%.o:%.f
$(FC)$(FFLAGS)-c$<-o$(OBJ)/$@
%(目标):$(OBJFILES)
$(FC)$(FFLAGS)-o$@$(addprefix$(OBJ)/,$(OBJFILES))
或者类似的东西应该能起作用