Windows版(CMake版)moshのビルド方法

Windows版のビルドには7ステップ必要です。

  1. Visual Studio 2010 のインストール
  2. CMakeのインストール
  3. yasmのインストール (MPIRのビルドに使う)
  4. MPIRのビルド
  5. onigurumaの展開
  6. CMakeでのconfigure
  7. moshのビルドとインストール

CMake回りの手順はClangやLLVMのような他のCMakeベースのソフトウェアでも大体同じなので知っていると良いかもしれない。
(基本的にWindows版のmoshは"アプリケーションに組込めるscheme処理系"を指向しているので、あまりビルド手順は簡単でないです。。CygwinならLinux同様にビルド/使用できますが、Cygwin自体がメモリ空間を食うので大きなデータの処理には使えないでしょう。)

ビルドに必要な環境

Windows XP以降。Windows 2000はサポートしていません

各種ソフトウェアのインストール

無料のExpress版で十分。2008はコンパイラのバグを踏むことが有るのでオススメしません。2008を使う場合は最新のサービスパックをインストールする必要有り。

インストーラでインストール。

展開後、readme.txtの指示に従って、Visual Studioディレクトリ中にコピー。
もちろんmoshソースコード( http://code.google.com/p/mosh-scheme/downloads/list )も必要。

MPIRのビルド

MPIRはGMPのforkで、Visual Studioのサポートを含んでいるのでWindowsビルドでは標準にしています。以前のmoshはバイナリ配布を含んでいましたがライセンス上の問題で分離しています。
source tarballを展開し、build.vc10/mpir.slnを開き、コンフィギュレーションを"Release"にしてdll_mpir_p3をビルド。
正常にビルドされれば、build.vc10/dll/Win32/Release/mpir.dllができるはず。
(実際には、他のコンフィギュレーションでも正常に動作します。。)

onigurumaの展開

5.9.2をダウンロードし、展開。
onigurumaはmoshのビルド時に自動的にビルドされるので、すぐにビルドする必要は無し。

CMakeでのconfigure

一番難しいところ。。
CMakeを起動し、sourceの場所として展開したmoshのソースツリー、buildの場所には適当な、moshのソースツリーの外のディレクトを指定します。
Configureボタンを押して、GeneratorとしてVisual Studio 2010を指定したら、エラーが出て止まるはずです。

その後、4つの変数を設定します :

  • CMAKE_INSTALL_PREFIX: moshをインストールする場所。Program Filesの下にインストールするのはあまりオススメしません。。
  • MOSH_GMP_DIR: 図のように、先にビルドしたMPIRの中にあるReleaseディレクトリを指定します。
  • MOSH_ONIG_DIR: 図のように、先に展開したonigurumaのパスを設定します。
  • MOSH_WITH_NMOSH: nmoshをビルドするならチェックを入れます。チェックを外した場合はpsyntax-moshになります。

設定後、configureを押して、Generateを押せば、buildのディレクトリにmosh.slnが生成されるので、それを開きます。
CMakeの落とし穴 :

  1. CMakeは、ソースツリーの中でビルドするようにはできていません。c:\build\mosh-0.2.6にソースコードを展開したのなら、ビルドはそのディレクト以外で行わなければいけません。
  2. CMakeに与えたディレクトリを移動してはいけません。CMakeは全てのファイルを絶対パスで管理しています。

ビルドとインストール

ALL_BUILDをビルドし、INSTALLをビルドすれば、先に指定したCMAKE_INSTALL_PREFIXにmoshがインストールされます。
生成されたmosh.slnには、いくつかのtestが含まれていますが、これらはまだWin32には移植されていません(実行しても失敗します)。