2013-03-06 106 views
0

當我建立一個項目USNG Eclipse中我得到關於Makefile中的下列錯誤:μC++生成文件錯誤

Type make: *** No rule to make target `hello.exe', needed by `all'. Stop. 

我的Makefile是這樣的:

all: hello 

hello: main.o factorial.o hello.o 
    g++ main.o factorial.o hello.o -o hello 

main.o: main.cpp 
    g++ -c main.cpp 

factorial.o: factorial.cpp 
    g++ -c factorial.cpp 

hello.o: hello.cpp 
    g++ -c hello.cpp 

clean: 
    rm -rf *o hello 

有誰知道這是我的錯?先謝謝你。

+0

我不知道這是否是一個Unix/Windows的區別,但你的規則是用於製作'hello',而不是'hello.exe';你是這個意思嗎? – 2013-03-06 11:26:59

+0

我不知道。有一個錯誤,我不知道如何解決它。 – vicesbur 2013-03-06 11:34:24

回答

0

月1日,好運與Eclipse開發,需要大量禪爲

2日,有關如何讀取一個makefile快速回顧:

target: requiredTarget(optional) 
how to generate the target 

所以,你可以看到,讀你的makefile的第一行就像是說:「我有一個名爲所有目標,這目標需要在目標招呼爲了中產生」。

現在的目標all是一個特殊的一個,它的一個是隱式的,因此,當您或您的IDE只是在你的shell中鍵入makemake all是隱含的(當然你也可以用make指定目標,特殊情況只在沒有通過命令行指定建築目標時才應用)。

鏈開始make或明確make all總是導致建立all目標,在hello目標all目標要求,但因爲你是在Windows,後綴.exe被自動添加和你make找不到一個名爲hello.exe的目標。

基本上,您需要管理操作系統特定的構建步驟,並且必須編輯該makefile才能使其工作,或者您可以等待更多人進入Eclipse,以查看是否有良好的makefile相關選項來管理這個平臺特定的東西。

一個很好的介紹是http://www.cprogramming.com/tutorial/makefiles.html

考慮QTcreator爲C++開發。

+1

爲了避免混淆,缺省值是先出現的目標,而不是名爲'all'的目標。 – 2013-03-06 11:47:27

+0

或者'.DEFAULT'僞目標的依賴。例如。 '.DEFAULT:全部'。 – 2013-03-06 12:01:55

+0

順便說一句:我真的懷疑'make'是自動將'.exe'添加到依賴項名稱。這只是沒有意義,因爲'make'對目標*類型*沒有任何線索。我的懷疑是Eclipse調用了'make hello.exe',導致了定製的錯誤信息。 – 2013-03-06 12:04:21

0

我沒有關於Eclipse但無論想法Makefile你會在Linux下正常工作。嘗試all這樣後改變目標名稱,並檢查了

all: hello.exe

hello.exe: main.o factorial.o hello.o

g++ main.o factorial.o hello.o -o hello.exe