2017-06-03 79 views
0

我有以下的生成文件。它適用於.f.c文件,但是當我有.f90文件並且想要用ifort編譯它時不起作用? 你能否告訴我我應該改變的地方以及如何改變? 感謝您沒有規則使目標f1.o,需要由f90_simple

FCOMPFLAGS = -O -ffixed-line-length-132 
CCOMPFLAGS = -O   

FFLAGS  = $(FCOMPFLAGS) -fsecond-underscore 
CFLAGS  = $(CCOMPFLAGS) 
LDFLAGS  = $(FCOMPFLAGS) 

LD   = gfortran 
FC   = gfortran 

MAKEFILE  = Makefile 
PROGRAM1  = f1 

OBJS   = f1.o  \ 
        f2.o  \ 
        f3.o      

all:  $(PROGRAM1)  

$(PROGRAM1): $(OBJS) $(MAKEFILE) 
    $(LD) $(LDFLAGS) $(OBJS) -o $(PROGRAM1) 

clean:   @rm -f $(OBJS) core 
當我執行「使」我得到以下錯誤

make: *** No rule to make target `f1.o', needed by `f90_simple'. Stop. 

看來,我的文件也不承認* .F90文件,我的另一個問題是,我們是否有在生成文件中使用標誌ifrot編譯 感謝

+0

由於您沒有提供有關使用'ifort'所做的更改的信息,也沒有提供任何有關問題的信息(_does not work_不是有用的問題描述),所以我們無法爲您提供幫助。 – MadScientist

+0

@ MadScientist感謝您的回覆,但是當我有f1.f和f2.f和f3.f並使用make它時,文件f1.f90和f2.f90和f3.f90的相同內容不起作用,請問我可以如何解決它,或者讓我的問題更清楚? –

+0

您應該顯示您輸入的命令的示例,並顯示您獲得的輸出並解釋您認爲不正確的原因。請剪切並粘貼,而不是轉述錯誤消息。 「不起作用」可能意味着一百萬件事情:可能找不到編譯器,可能找不到您的源代碼,您的代碼中可能存在錯誤,您可能位於錯誤的目錄中,您可能需要安裝額外的庫,可能沒有磁盤空間,您的計算機可能會自動重新啓動......我們不知道,甚至不知道您的問題是什麼,我們如何幫助您解決問題? – MadScientist

回答

1

您需要添加隱含規則:

%.o : %.f90 
<tab>$(FC) $(FCOMPLAGS) -c $< 
+0

@傑克多一個問題,爲什麼行清理:@rm -f $(OBJS)核心不適合我* .o文件不會被刪除?你能爲我解釋一下嗎? –

+0

把'clean:'放在一行上,並且在它下面的行上有' @rm -f $(OBJS)core'。 – Jack

+0

@傑克然後每次我應該打字乾淨??有沒有辦法讓它自動化? –

相關問題