Dear All
Excuse me if my question is not directly about Fortran.
I want to compile and link my Fortran files using a makefile.
The Fortran source files are in a sub-folder and I want the object files are made in another sub-folder while the executable file is made in the root folder. For example the source files are in ./src, the object files in ./debug.
I can generate a make file (using a perl script) that compile the sources and link them while all the files are in a folder but I could not change it to do the above task. In the present way all the files are mixed in a folder but i want to have only executable file and my input and output files in the root folder.
Thanks in advance,
Hadian

My  makefile  for a project including 3 files is as follows:
==== makefile ======
PROG =    a.out
SRCS =    main.f90 setarray.f90 vardef.f90
OBJS =    main.o setarray.o vardef.o
LIBS =   
FC = gfortran
FFLAGS = -O
F90 = gfortran
F90FLAGS = -O
LDFLAGS = -s
all: $(PROG)
$(PROG): $(OBJS)
    $(F90) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
clean:
    rm -f $(PROG) $(OBJS) *.mod
.SUFFIXES: $(SUFFIXES) .f90
.f90.o:
    $(F90) $(F90FLAGS) -c $<
main.o: vardef.o
setarray.o: vardef.o

==== main.f90 ======
program test
    use VarDef
    implicit none
    integer :: i
    Print *, "input array dimension:"
    read *,n
    call SetArray
    a=(/(2*i,i=1,n)/)
    print * ,a
end program

==== setarray.f90 ======
subroutine SetArray
    use VarDef
    implicit none
    allocate(a(n))
end subroutine SetArray

==== vardef.f90 ======
module VarDef
implicit none
    integer,allocatable,dimension(:)::a
    integer::n
end module VarDef