Windows で Vim をソースコードからビルドする

7.3 の開発も始まり今もアツい Vim。先日スナップショット版のWindows用のインストーラも公開されたが、それ以降の最新の機能を試したい場合や好みの機能を入れるには、自分でソースコードからビルドする必要がある。
ただソースコードからのビルドは中々にハードルが高いので、自分へのメモの意味も込めてちょっと手順をまとめてみることにした。

開発環境を用意する

ソースコードをビルドするためには、まず開発環境が必要です。
Visual C++MinGW をインストールしておきます。インストール方法についてはここでは省略します。

ソースコードを取得する

Mercurial をインストールする

現在 Vim の最新版は Mercurial リポジトリで管理されています。なので、まずは Mercurial をインストールする必要があります。

Mercurial SCM

インストールは省略。Windowsインストーラがあるのでそれを使えば問題ないです。
ここからは基本的にコマンドラインで操作を行ないます。

ソースコードの取得

任意のディレクトリに移動して、以下のコマンドを実行すると vim というディレクトリが作られそこにソースコードが展開されます。

$ hg clone https://vim.googlecode.com/hg vim
全チェンジセットを取得中
チェンジセットを追加中
マニフェストを追加中
ファイルの変更を追加中
2288 のチェンジセット(18448 の変更を 2463 ファイルに適用)を追加(+2個のヘッド)
ブランチ default へ更新中
ファイル状態: 更新数 2283、マージ数 0、削除数 0、衝突未解決数 0

最新版は vim73 ブランチで開発されているので、そこへ切り替えます。

$ cd vim
$ hg update vim73
ファイル状態: 更新数 378、マージ数 0、削除数 0、衝突未解決数 0

オプション: 香り屋のパッチを当てる

香り屋版の機能が使いたい場合はパッチを当てます。まずはパッチを入手します。

http://www.kaoriya.net/#VIM72

パッチ単体の配布は見た感じなさそうなので、本体を取得して zip を展開し、patches ディレクトリにあるパッチを vim を展開した場所へ移動します。
さて、同梱の CHANGES.txt によると私の取得した 20100510 版の香り屋パッケージは 7.2.416 をベースにしているらしいので、まずはそこへ移動します。

$ hg log --keyword 7.2.416
チェンジセット:   2134:e9c9f37be306
ユーザ:           Bram Moolenaar <bram@zimbu.org>
日付:             Fri May 07 16:54:37 2010 +0200
要約:             updated for version 7.2.416

7.2.416 は私のリポジトリだと 2134 なので、そこへ移動します。

$ hg update 2134
ファイル状態: 更新数 410、マージ数 0、削除数 29、衝突未解決数 0

パッチを当てる前に念のためブランチを切っておきます。

$ hg branch kaoriya
作業領域をブランチ kaoriya に設定

パッチを当てます。

$ hg import kaoriya-hg.diff -m "Applied the kaoriya's patches."
kaoriya-hg.diff を適用中

ここで rebase します。rebase エクステンションが必要です。

$ hg rebase --dest vim73 --keepbranches

すると、色々とコンフリクトを起こすので、頑張って解消してください。


…と言うのも何なので、私が解消した diff を置いておきます。この記事を書いてる時点で最新の 2287:3331756e4232 に対する diff です。
これを使う場合、2134への移動とrebaseは必要ありません。
ただし、私がかなり適当に解消したものなので、正しく解消されているかは保証できません!

ビルド+インストール

まず、インストール先のディレクトリを用意し、そこへ runtime ディレクトリをコピーします。

ビルドをするには、src ディレクトリ内の .mak ファイルを使って nmake もしくは make を実行します。
説明が面倒になってきたので、ビルト用batのテンプレートをVisual C++用MinGW用でそれぞれ用意してみました。
コンパイルオプションなどを直接弄って、作業ディレクトリのルートに置いて実行してください。
コンパイルオプションの説明は .mak ファイルの最初にコメントで書かれています。

各種インターフェースが欲しい場合は、それぞれインストールしておく必要があります。以下に一例を挙げます。

Ruby

私は以下で配布されているものを使用しています。

http://www.garbagecollect.jp/ruby/mswin32/ja/

{Rubyを展開したディレクトリ}\lib\ruby\1.8\i386-mswin32\config.h の冒頭でコンパイラのバージョンをチェックしていますが、ここでコケるので #error の部分をコメントアウトする必要があります。

ちなみに Ruby 1.9 の方で試したところ、やり方が悪いのかビルドに失敗してしまいました。

Python

公式サイトからインストーラで入れてもので大丈夫です。私は今回は 2.7 を使いました。

Perl

私は StrawberryPerl を使っています。今回は 5.12.0.1 の zip 版を使いました。インストール先のパスは、StrawberryPerl 内の perl ディレクトリを指定します。

その他

iconv.dllmigemo.dll も入れておくといいでしょう。