Apr 18, 2011

Makefileってそいういう仕組みだったんだね…あたしってホント、馬鹿

かいてんパティシエ!グリーンアイランドのビルドがきっかけで、make や Makefile をきちんと勉強しようと思って、週末にざっと GNU Make Manual を読んでみました。お蔭でぽち環境でのビルド時に悪さをしていた部分がやっとこさ分かりました。

一つは、Makefile.linux の include .depend で .depend の中のリストを使ってヘッダファイルをインクルードしている部分です。これが、存在しない場所にあるヘッダファイルをインクルードしようとして、

make: *** `ram.o' に必要なターゲット `/usr/local/mingw32/include/SDL/SDL.h' を make するルールがありません.  中止.

というエラーを引き起こしていました。

もう一つはグリーンアイランドだけの問題なのですけども、展開して出来た bubble/src の中に make前にもかかわらず不要なオブジェクトファイルがどっさり入っています。

dconv.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make[1]: *** [GreenIsland] エラー 1
make[1]: ディレクトリ `/home/pochi/Desktop/bubble/src' から出ます
make: *** [recursive] エラー 2

これがまた、上のようなエラーに繋がっていました。これらの症状は make を行う前に make clean すれば回避出来ます。それに加えてグリーンアイランドの場合は Makefile.linux の中で RotateGear になっているターゲットの名前を、お作法に則ってきちんと GreenIsland にしてあげれば良いだけです。

その肝心の make clean ですが、make clean を実行する前に Makefile.linux の clean: のコマンド部分は、$(RM) $(OBJS) *~ .depend RotateGear.exe から、出来上がる筈のバイナリに合わせて、$(RM) $(OBJS) *~ .depend RotateGear なり、$(RM) $(OBJS) *~ .depend GreenIsland なりに変更する必要があります。

とりあえずわかった事を日記に書いてみましたけども、近いうちにぽち*ぷ〜ちLinux箱に置いてあるかいてんパティシエ!、グリーンアイランドを遊ぶも書き直さないと…。

Comments/Trackbacks
TrackBack ping me at
http://pochi.usamimi.info/blog/programming_languages/makefile_next.
Post a comment

writeback message: