4

了解しました。これは、教授から提供されたスケルトンプログラムを完了することになっている学校プロジェクト用です。これが私に提供されたmakefileです:

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を使用)およびDev C ++で正常に機能しましたが、Netbeansを使用しようとすると、cleanコマンドについて何かを言ってエラーがスローされました。だから、私はこの行を追加しました:

clean:
    rm -f *.exe *.o

ファイルの最後まで、(Netbeansで)正常に機能しました。ただし、EclipseCDTではまだ機能しません。このエラーが発生します:

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で機能するように変更する方法について何かアイデアはありますか?

現在の(機能しない)形式のmakefileは次のとおりです。

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
4

1 に答える 1

1

私の知る限り、Eclipseはデフォルトのビルドツールチェーンとしてgnu make/gccを使用しています。したがって、makefileがシェルで機能する場合は、Eclipseでも機能するはずです。あなたが言及する最初のエラーは、Eclipseがデフォルトのコマンド「makeall」でビルドすることを指摘しているだけです。'all:db'を追加すると、この問題が修正されているはずです。@Bug Catcherが言ったように、「all:」と「db」の間にスペースを入れる必要があります。.PHONYステートメントを追加することもできます。

.PHONY: all db clean

all: db
    @echo "Done !"

# [...]
于 2012-12-11T19:13:35.610 に答える