2012-04-10 3 views
1

私はメイクファイルを私のために書いているIDEでコーディングの贅沢さを楽しんでいましたが、Ivは遠くまで「ショートカッティング」していたので、 makefilesに関するいくつかのビデオを見て、makefileを半完成にしました。唯一の問題は、ライブラリのリンク方法がわかりません。自分のメークファイルを作成する[エラー255]

CPPS := $(shell ls src/*cpp) 
TEMP := $(subst src/,obj/,$(CPPS)) 
OBJS := $(subst .cpp,.o,$(TEMP)) 
HEADERS := $(shell ls inc/*.h) 
EXEC := bin/testfile 

all: $(EXEC) 

$(EXEC) : $(OBJS) $(HEADERS) 
g++ -I inc/ $(OBJS) -o $(EXEC) -lSDL -lGLU 
$(EXEC) 

obj/%.o: src/%.cpp 
g++ -Wall -I inc/ -c $< -o [email protected] 

PS:私は-lSDL -lGLUなどを意味する「ライブラリフラグ」を言うとき、ちょうど包み、私はそれらを置くどこ

は、彼らが動作するようには思えいけない...間違ったことを言っています。

私はlibにフラグを挿入するとこれは私が取得エラーです、 make: *** [bin/testfile] Error 255

エラー255は、そのコマンドシェルは、特定のルールのためのコマンドを見つけることができないの結果として、メイクによって生成されます。

もし私がそれらを含んでいなければ、私は標準的な '未定義'のメッセージを受け取ります。

これについてのお手伝いをさせていただきますようお願い申し上げます。ありがとう

+0

貼り付けたスニペットに '-l'フラグはありません。 "10行目" "最終行"のようなものに従うことは難しい –

+0

申し訳ありません、すべて固定:) – Elgoog

+0

"仕事していないようです"と言ったときに直面しているエラーを教えてください。 –

答えて

1

ビルドした後で実行可能ファイルを実行しようとしているようですか?

この場合、PATHに現在のディレクトリがないことが問題です。だから、$(EXEC)を見つけることができません。

./$(EXEC)を実行して直接実行してください。

ターゲットを別の(PHONY)ターゲットに移動して、ビルドステップだけを実行し、$(EXEC)をビルドする必要がない場合に実行する必要があります。

(私は、タブの欠如は単にstackoverflowの書式設定であると仮定しています。そうでなければmakeは不平を言います)。

+0

お金のあなたの強打そこに!ありがとう、ライブラリを正しくリンクしていますか?私のprogは実行されていないようですが、エラーは表示されません。しかし、IDEを使ってビルドすると、うまくいきます。 – Elgoog

+0

@Elgoog十分な情報を提供していないのは恐れています。私が提案した変更をしましたか?あなたのMakefileからプログラムを実行するのをやめ、それを直接実行すると、何が起こっているのかが分かりやすくなります。 –

関連する問題