MinGW + MSYS 環境で Text::Kakasi をビルドする

MinGW + MSYS 環境で Text::Kakasi をビルドする手順。忘れないようにメモしておく。以下は、MinGW 5.1.3、MSYS 1.0.10、ActivePerl 5.8.8 build 820 での話。バージョンが違えば異なる箇所も出てくるかもしれない。

  • MinGW と MSYS をインストールする

http://www.mingw.org/ からダウンロード。
インストーラがあるのでそれを使ってインストールするだけ。

  • nmake をインストールする

Perl モジュールのビルドには nmake を使う。nmake はここらへんからダウンロードできる。できなければ、「nmake15」とかで検索すると出てくるかも。

  • ExtUtils::FakeConfig をインストールする

http://search.cpan.org/~mbarbon/ExtUtils-FakeConfig/ からダウンロード。
ppm からもインストールできるが、バージョンが古くいろいろと不都合が生じるので CPAN から最新バージョン(これを書いている時点では 0.10)をダウンロードしてインストールする。
MSYS のホームフォルダかどこかに展開後、

perl Makefile.PL
nmake
nmake install

でインストール。make の代わりに nmake を使う以外は特筆すべきこともなし。

  • Kakasi のインストール

http://kakasi.namazu.org/ からダウンロード。
普通にインストールするだけ。

./configure
make
make install

  • Text::Kakasi のインストール

http://search.cpan.org/dist/Text-Kakasi/ からダウンロード。
ExtUtils::FakeConfig を使うことを忘れないこと。

perl -MConfig_m Makefile.PL
nmake
nmake install

……でうまくいくはずなのだが、なぜか libkakasi.a やら libkakasi.h やらを見つけてくれないので、Makefile.PL の /usr/local/includeE:\msys\1.0\local\include に、/usr/local/libE:\msys\1.0\local\lib にそれぞれ置き換えて(msys は E ドライブにインストールされている)から実行する。
なにか設定が間違っているだけとか、あるいはもっといい方法がありそうな気もするが(ls /usr/local/include などとすれば libkakasi.h がちゃんと見つかるのだし)、とりあえずはこんな感じで。

MinGW + MSYS 環境で MeCab (Perl モジュールも含め)をビルドする

ExtUtils::FakeConfig までは Kakasi と共通。

  • MeCab のインストール

http://mecab.sourceforge.net/ からダウンロードする。
MeCab 自体は ./configuremakemake install で何事もなくインストールすることができるのだが、このままだと Perl モジュールのビルドに失敗してしまうため、MinGw における MeCab のシェアードライブラリの問題: ナマズのブログを参考に mecab.h を修正する。具体的には、(MeCab 0.96 では)119 行目あたりにある条件式を書き換える。
あとは、

./configure
make
make install

で完了。

  • 辞書のインストール

辞書は簡単。

./configure
make
make install

だけ。

Makefile.PL 内で mecab-config を呼ぶようになっているが、どうも Perl からは呼び出せずエラーになってしまうようなので、MSYS 上で mecab-config --cxx などを実行してその結果を貼付けてしまう。が、ここでも /usr/local/include などのファイルをなぜか見つけてくれないので、実行結果を貼付けつつ内容を修正する。具体的には

use ExtUtils::MakeMaker;
WriteMakefile(
'NAME' => 'MeCab',
'CC' => 'g++',
'LD' => 'g++',
'INC' => '-Ie:\msys\1.0\local\include',
'LIBS' => '-Le:\msys\1.0\local\lib -lmecab',
'VERSION' => '0.96',
'OBJECT' => 'MeCab_wrap.o'
);

こんな感じになる。あとは、

perl -MConfig_m Makefile.PL
nmake
nmake install

でビルド完了。