2017-03-13 45 views
0

我想重寫gfortran而不是g77的Makefile。如果我包括線如何在gfortran中使用include?

FCFLAGS += -I./include 

然後查找,我沒有一個mod文件,但如果我省略該行無法找到它在./include目錄需要的文件。不知道如何解決這個問題...

CMD  = tomoDD2 
CC  = gcc 
FC  = /usr/local/bin/gfortran 
FCFLAGS = -g -fbounds-check 
FCFLAGS = -O2 
FCFLAGS += -I./include 

SRCS = $(CMD).f \ 
      aprod.f cluster_tomoDD.f covar.f datum.f \ 
      delaz.f delaz2.f direct1.f dist.f exist.f \ 
      freeunit.f getinp_tomoDD.f ifindi.f \ 
      indexxi.f juliam.f syn_time_new.f\ 
      lsqr.f matmult1.f matmult2.f matmult3.f mdian1.f \ 
      normlz.f ran.f redist.f refract.f \ 
      resstat_tomoDD.f scopy.f sdc2.f setorg.f \ 
      snrm2.f sort.f sorti.f sscal.f \ 
      svd.f tiddid.f trialsrc_tomoDD.f trimlen.f \ 
      ttime.f vmodel.f Ray3VD.f \ 
      getdata_tomoDD.f add_sta.f find_id.f \ 
      dtres_tomoDD.f weighting_tomoDD_lw.f lsfitH_tomoDD_lsqrn.f 
CSRCS = atoangle_.c atoangle.c ndatetime_.c nhypot_.c nrpad_.c \ 
      sscanf3_.c 
OBJS = $(SRCS:%.f=%.o) $(CSRCS:%.c=%.o) 
INCLDIR = ./include 

all: $(CMD) 

$(CMD): $(OBJS) 
     $(FC) $(OBJS) $(LIBS) -o [email protected] 

%.o: %.f 
     $(FC) $(FCFLAGS) -c $(@F:.o=.f) -o [email protected] 
#  $(FC) $(FCFLAGS) -c $< 

clean: 
     -rm -f $(CMD) *.o core a.out *.fln junk 
+2

*「那麼它會查找我沒有的.mod文件,但是如果我省略該行,則無法在./include目錄中找到它所需的文件」*我完全不理解。哪個模塊?如果你有一些錯誤消息顯示他們請請。還顯示與這些消息相關的任何代碼。 –

+0

如何將所需文件移動到默認搜索路徑(即當前目錄)上的某個位置。 – agentp

回答

0

因爲在Fortran編譯主文件之前必須單獨編譯模塊。

+0

這是什麼意思?該程序過去曾與g77編譯過。我不認爲g77知道任何模塊。它是一個帶有一些擴展的FORTRAN 77編譯器。我建議你等待猜測,直到我們有一些具體的信息。 –

+0

你爲什麼認爲這解決了這個問題? -1從我。 – Ross

相關問題