2012-12-08 23 views
4

好的,這是一個學校項目,我應該完成教授提供的骨架程序。這裏是提供給我的生成文件:如何修復在Dev C和Netbeans中工作的makefile,但不能在Eclipse中修復?

db: db.o students.o courses.o enrolls.o 
    cc db.o students.o courses.o enrolls.o -o db 
db.o: db.c types.h students.h courses.h enrolls.h db.h 
    cc -c db.c 
students.o: students.c types.h students.h 
    cc -c students.c 
courses.o: courses.c types.h courses.h 
    cc -c courses.c 
enrolls.o: enrolls.c types.h students.h courses.h enrolls.h 
    cc -c enrolls.c 

現在,這在命令行(用gcc),並在開發的C++工作得很好,但是當我試圖使用NetBeans它扔了一個錯誤,說一些有關清潔命令。所以,我添加了這一行:

clean: 
    rm -f *.exe *.o 

到文件末尾,它工作正常(在Netbeans中)。但是,它仍然不能在Eclipse CDT中使用。它給出了這樣的錯誤:

Description Resource Path Location Type 
make: *** No rule to make target `all'. Stop. Course Project   C/C++ Problem 

所以,我嘗試添加

all:db 

頂端,但隨後拋出這個錯誤:

Description Resource Path Location Type 
make: *** [db] Error 1 Course Project   C/C++ Problem 

所以,現在我在一個失去了做什麼。我谷歌搜索,但似乎沒有任何工作。關於如何改變這個makefile的任何想法,以便它在Eclipse中工作?

這是在當前(非功能性)的形式生成文件:

all:db 

db: db.o students.o courses.o enrolls.o 
    cc db.o students.o courses.o enrolls.o -o db 
db.o: db.c types.h students.h courses.h enrolls.h db.h 
    cc -c db.c 
students.o: students.c types.h students.h 
    cc -c students.c 
courses.o: courses.c types.h courses.h 
    cc -c courses.c 
enrolls.o: enrolls.c types.h students.h courses.h enrolls.h 
    cc -c enrolls.c 
clean: 
    rm -f *.exe *.o 
+0

也許更好的問題是「如何獲得eclipse以產生有用的錯誤消息?」 –

+0

我注意到在所有:和db之間沒有空格。在你的Makefile中是一樣的嗎?先嚐試從命令行make,看看它是否有效 –

回答

1

據我所知,Eclipse中使用GNU化妝/ gcc作爲一個默認的編譯工具鏈。所以如果你的makefile在shell中工作,它應該在Eclipse中工作。您提到的第一個錯誤只是指出Eclipse使用默認命令「make all」構建。添加'all:db'應該糾正了這個問題。正如@Bug Catcher所說,你應該在'all:'和'db'之間有一個空格。您還可以添加一個.PHONY語句:

.PHONY: all db clean 

all: db 
    @echo "Done !" 

# [...]