動機
これまで、香り屋さん提供の Vim / GVim バイナリを利用して Windows 上で快適な Vimライフを送ってきました。プログラミングをたしなむ者として、自分の使うソフトをソースからビルドしてみたいと思い、やってみることにしました。
本記事の要約
- Windows 10 上に ビルド環境を整える。
- GVim の最新版に、香り屋版パッチを当てる。
- ビルドする。
- DLL を用意する。 (まだできていません)
- ファイルを配置する。 (まだできていません)
前提
- Windows 10 がインストールされている。
- Windows 7 SP1 以降なら同様の手順で可能であると思われます。
- インターネット環境がある。
- Git を使ってソースコードを取得したりします。
手順
Windows 10 上に ビルド環境を整える
まず、ビルド環境を整えます。私の環境はWindows 10 Pro ですが、Windows 10 Home や、Windows 8/8.1、Windows 7 でも同様に構築できると思われます。
- Visual Studio Community 2019 のダウンロード・インストール
- Git for Windows のダウンロード・インストール
- Vim 最新版ソースコードのダウンロード
- 香り屋版パッチのダウンロード
Visual Studio Community 2019 のダウンロード・インストール
Visual Studio Community 2019 リリース ノート のページから、Visual Studio Community 2019 のインストーラをダウンロードし、実行します。
「ワークロード」タブで、「C++ によるデスクトップ開発」にチェックを入れると、必要なファイル一式がインストールされます。
Git for Windows のダウンロード・インストール
Git のウェブサイト (https://git-scm.com/) から、Git for Windowsをダウンロードし、インストールします。
Vim 最新版ソースコードのダウンロード
Git Bash を起動します。Vim のソースコードを置くディレクトリに移動し、以下のコマンドを実行します。
$ git clone https://github.com/vim/vim.git
香り屋版パッチのダウンロード
続けて次のコマンドを実行し、香り屋版パッチをダウンロードします。
$ git clone https://github.com/koron/vim-kaoriya-patches.git
Vim の最新版に、香り屋版パッチを当てる
guilt (Git で動くパッチ管理ツール) が Git Bash で動かない(´・ω・`)
guilt を利用すると、パッチ内容が変わっても同様の手順で処理できるのですが、残念ながら、Git for Windows の Bash では "unsupported" と言われて処理ができません。ならば、手動で……とまでは行きませんが、半自動での処理を目指します。
Vim のブランチを切る
master ブランチでそのまま直接作業しても構いませんが、ソースコードに変更を加える作業ですので、ブランチを切っておいたほうがいいでしょう。
$ git checkout -b with-patch
パッチファイルを微修正
2520-migemo_feature.diff が、2019/06/14 現在の最新版では、そのままパッチが通らないため、微修正します。
最終行と、その1行前のコメントブロックを、1行コメントのスタイルに変更します。
git apply を実行
guilt が Git Bash でも使えるようになったら、この手順は変わります。
python2-warn.diff はエラーが出て通りませんので、リネームするなどして、適用除外としておきます。 (ガッツリ修正するのが面倒で、実行に影響が出ないっぽいので……)
$ git apply ../vim-kaoriya-patches/master/*.diff
ex_cmdidxs.h を更新
私もまだ勉強中なのですが、新しい Ex コマンドを追加すると、表題のヘッダファイルを更新する必要があるみたいです。そのための Vim script が用意されています。
……えーと、Vim を作るのに Vim が必要……?どういうことなのか、詳しい方、ご教示ください。でも必要だというのなら、 Git Bash 付属の Vim を使うことにします。
$ vim -u NONE -i NONE -X -S create_cmdidxs.vim
ビルド
vim-jp のサイトの説明 (https://vim-jp.org/docs/build_windows_msvc.html) を参考に、プログラムのコンパイル (ビルド) を行います。
DLL を用意する
いろいろ調べていて、ここが一番難しいということに気付きました。 migemo.dll は、バイナリが提供されていますので、ダウンロードしてくれば大丈夫なのですが、残る 3つは基本的にソースコードによる提供となっていました。どうすれば、ソースコードをコンパイルして、DLL を用意できるか、勉強してきます。
- iconv.dll
- winpty.dll
- intl.dll
- migemo.dll
現時点では、Vim の香り屋版バイナリをダウンロードして、それに添付されている DLL を用いるのが一番早いかもしれません。
ファイルを配置する
感想
自分でビルドするって、とても大変です……Vimの開発に参加されている皆様、Windows向けバイナリを用意してくださるKoRoN様、ありがとうございます。プロジェクトに貢献できるように、腕を磨きます。