g ++とautomakeを使用して、Ubuntu 10.10でC++アプリケーションを開発しています。このプログラムでは、2つのcppファイル(main.cppとforward.cpp、後者はテストクラス)とforward.hを持っています。私は同じディレクトリにすべてのものを4つのファイルをコピーして呼び出すとEclipseでC++プロジェクトのmakeを実行する
main: \
forward.o
g++ -fPIC -g -Wall -D_REENTRANT -fno-exceptions -I/usr/local/Aria/include/ -L/usr/local/Aria/lib -lAria -lpthread -ldl -lrt \
-o simple_controller \
main.cpp \
forward.o
%.o : %.cpp
g++ -c -g -Wall -D_REENTRANT -fno-exceptions -I/usr/local/Aria/include/ $< -o [email protected]
clean:
rm -fv *.o
rm -fv */*.o
「作る」コマンドライン(bashの)その後、G ++と呼ばれ、私のプログラムが正しくコンパイルされますから。私はまた、次のメイクファイルを持っています。
これで、私はEclipseで同じことを達成したかったのです。そこで私は自分のmakefileを提供できるように、Eclipseの下に新しいアンマネージC++プロジェクトを作成しました(上記のものと同じです)。残念ながら、私は今、私は次のコンソール出力を参照することができますEclipseの下のオプション「すべてを構築」を使用する場合:私はLinuxでC++開発に新しいですので、g ++およびmakefileを使用して、私は本当に理解していない
make
make: *** No rule to make target `forward.o', needed by `main'. Stop.
を問題。アプリケーションを正しくコンパイルするために必要なことは、コマンドラインから完全に動作するので、makefileに書かれていると思いました。しかし、それは私のEclipseプロジェクトに同じメイクファイル1:1をコピーすることはできないようです。
私はここで何が不足していますか?
ご協力いただきありがとうございます!
残念ながら、デフォルトでは "all"をターゲットとして使用するので、プロジェクトプロパティ - > C/C++ビルド - >タブ "ビヘイビア"、入力ボックス "ビルド(インクリメンタルビルド)"から "all"を削除しました。もう一度ここに「all」と入力して、提案に従ってメイクファイルを変更すると、元の投稿と同じエラーが表示されます(今回は最初の行に「make all」と表示されます)。 – Matthias
@Matthias:何がうまくいかないその後、次のようにして私のfedora 14システム(私は現時点でUbuntu VMを持っていません)でテストしました:1)新しい空のプロジェクトを作成します。 2)提供したMakefileをコピーしてMakefileを作成します(ターゲットではない各行がタブで始まるように再フォーマットします)。3)単純なmain.cppファイルとforward.cppファイルを作成します。 4)/ usr/local/Aria/*への参照を私のテストに関連しないものとして削除する。 5)プロジェクトをC++ Makefileプロジェクトに変換しました。 6)すべてのターゲットを追加しました。7)ビルドを行いました。 – diverscuba23