JNetHackをWindows上でビルドする


概要

JNetHackのビルドはそれほど難しくありませんが、Sourceforge.jpから持ってきた最新のソースコードをWindows上のBorland C++ Builderでビルドするには、文字コードをEUCからShift JISに変更しなければならない点に注意する必要があります。

必要なもの

Sourceforge.jpからソースコードを取得するためにcvs、パッチを適用するためにpatchが必要なので、手っ取り早くcygwinを導入します。 コンパイラにはBorland C++ Compiler 5.5を使います。 漢字コードの変換にはnkfを用います。文字コードを一括変換するためのシェルスクリプトを動かすために、cygwinのbashを用います。

インストール

このガイドでは、次のフォルダ構成を仮定しています。
c:\borland\bcc55\binBorland C++ Compiler 5.5のbinフォルダ
c:\cygwin\bincygwinのbinフォルダ
c:\jnhソースコードを落とす作業フォルダ
各プログラムフォルダが上記のようになるように、bcc、cygwinをセットアップします。 nkfは、展開して、2072\win\nkf.exeをc:\cygwin\binにコピーしておきます。
作業フォルダとしてc:\jnhフォルダを作成し、その中に次の内容のシェルスクリプトをconvsjis.shとして保存しておきます。
for i in *
do
	if [ -d "$i" ];
	then
		echo "directory $i"
		cd $i
		../$0
		cd ..
	else
		echo "file $i"
		nkf -s < $i > tmp
		mv tmp $i
	fi
done
このシェルスクリプトは、実行したフォルダ以下の全てのファイルの文字コードをShift JISに変換します。改行コードは変換しません。

ソースコードの取得

作業フォルダにソースコードをダウンロードします。pathをc:\cygwin\binに限定して設定しているのは、間違って他のプログラムが実行されないように、念のため。
cd c:\jnh
path c:\cygwin\bin
cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/jnethack login 
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/jnethack co jnethack
これでソースコードの取得が完了しました。

文字コードの変換

先ほど作ったシェルスクリプトを実行して、ソースコードをShift JISに変換します。EUCで書かれたパッチが有れば、この前に当てます。
cd jnethack
path c:\cygwin\bin
bash ../convsjis.sh

Makefileのセットアップ

sys\winntにあるnhsetup.batを起動して、Windows用にmakefileをセットアップします。このバッチファイルは、Windows用のMakefileをsysフォルダからsrcフォルダにコピーします。
cd sys\winnt
nhsetup
ビルド前に当てるパッチがあれば、この段階で当てます。

ビルド

srcフォルダからmakeコマンドを実行します。pathはBCCのbinフォルダに切り替えておきます。cygwinのが先にあると、そっちのmakeが実行されてしまうため、うまく動きません。
cd c:\jnh\jnethack\src
path c:\borland\bcc55\bin
make Makefile.bcc install
実行ファイル一式はbinaryフォルダに作成されます。
cd ..\binary
nethack
おわり。

パッチ

パッチを当てるにはpatchコマンドを使います。ほとんどの場合、ソースコードのルートフォルダ(ここではc:\jnh\jnethack)から、
patch -p1 < ファイル名
でokです。pathがc:\cygwin\binになっていないと、別のpatch.exeが実行される場合があるので注意しましょう。
たとえばYet Another Win32 Window Portを適用するなら、Makefileのセットアップまで済んだところで、
cd c:\jnh\jnethack
path c:\cygwin\bin
patch -p1 < jwin32y_v03.diff
でOKです。

戻る