3年以上前ぐらいにやった手順を確認しながら別の環境で構築が必要だったので試してみました。
まずビルドに必要なライブラリをcygwinにインストールします。
バッチファイルを作って次のような感じにすると手早いですかね。
コマンドラインオプションの詳しい情報はこちら
bat
1.\setup-x86_64.exe -d -q -g -P gcc-g++,binutils,libiconv,libiconv-devel,make,automake,patch
次のような本邦初公開のパッチをあてます。コピペしてmecab-0.996-cygwin-build.patch
と保存して下さい。改行コードをLF
のみにするのをお忘れなく。
diff
1diff -ur old/src/dictionary.cpp new/src/dictionary.cpp
2--- old/src/dictionary.cpp 2013-02-16 11:50:46.000000000 +0900
3+++ new/src/dictionary.cpp 2018-11-14 23:35:59.487114500 +0900
4@@ -5,6 +5,7 @@
5 // Copyright(C) 2004-2006 Nippon Telegraph and Telephone Corporation
6 #include <fstream>
7 #include <climits>
8+#include <vector>
9 #include "connector.h"
10 #include "context_id.h"
11 #include "char_property.h"
12diff -ur old/src/feature_index.cpp new/src/feature_index.cpp
13--- old/src/feature_index.cpp 2012-11-25 14:35:33.000000000 +0900
14+++ new/src/feature_index.cpp 2018-11-14 23:35:01.967917900 +0900
15@@ -7,6 +7,7 @@
16 #include <cstring>
17 #include <fstream>
18 #include <string>
19+#include <vector>
20 #include "common.h"
21 #include "feature_index.h"
22 #include "param.h"
23diff -ur old/src/param.cpp new/src/param.cpp
24--- old/src/param.cpp 2012-09-30 01:44:27.000000000 +0900
25+++ new/src/param.cpp 2018-11-14 23:41:10.627705800 +0900
26@@ -5,6 +5,7 @@
27 // Copyright(C) 2004-2006 Nippon Telegraph and Telephone Corporation
28 #include <cstdio>
29 #include <fstream>
30+#include <vector>
31 #include "common.h"
32 #include "param.h"
33 #include "string_buffer.h"
34diff -ur old/src/tagger.cpp new/src/tagger.cpp
35--- old/src/tagger.cpp 2013-02-18 01:55:30.000000000 +0900
36+++ new/src/tagger.cpp 2018-11-14 23:37:13.846426300 +0900
37@@ -6,6 +6,7 @@
38 #include <cstring>
39 #include <iostream>
40 #include <iterator>
41+#include <vector>
42 #include "common.h"
43 #include "connector.h"
44 #include "mecab.h"
45diff -ur old/src/tokenizer.cpp new/src/tokenizer.cpp
46--- old/src/tokenizer.cpp 2013-01-23 23:58:03.000000000 +0900
47+++ new/src/tokenizer.cpp 2018-11-14 23:36:41.628424200 +0900
48@@ -3,6 +3,7 @@
49 //
50 // Copyright(C) 2001-2011 Taku Kudo <taku@chasen.org>
51 // Copyright(C) 2004-2006 Nippon Telegraph and Telephone Corporation
52+#include <vector>
53 #include "common.h"
54 #include "connector.h"
55 #include "darts.h"
56diff -ur old/src/utils.cpp new/src/utils.cpp
57--- old/src/utils.cpp 2013-01-22 14:33:25.000000000 +0900
58+++ new/src/utils.cpp 2018-11-14 23:38:36.944425400 +0900
59@@ -6,6 +6,7 @@
60 #include <cstring>
61 #include <fstream>
62 #include <iostream>
63+#include <vector>
64
65 #ifdef HAVE_CONFIG_H
66 #include "config.h"
67diff -ur old/src/viterbi.cpp new/src/viterbi.cpp
68--- old/src/viterbi.cpp 2013-02-18 01:00:26.000000000 +0900
69+++ new/src/viterbi.cpp 2018-11-14 23:39:17.019705400 +0900
70@@ -7,6 +7,7 @@
71 #include <iterator>
72 #include <cmath>
73 #include <cstring>
74+#include <vector>
75 #include "common.h"
76 #include "connector.h"
77 #include "mecab.h"
78diff -ur old/src/winmain.h new/src/winmain.h
79--- old/src/winmain.h 2012-10-28 13:07:01.000000000 +0900
80+++ new/src/winmain.h 2018-11-14 23:42:25.688374200 +0900
81@@ -2,7 +2,7 @@
82 //
83 // Copyright(C) 2001-2011 Taku Kudo <taku@chasen.org>
84 // Copyright(C) 2004-2006 Nippon Telegraph and Telephone Corporation
85-#if defined(_WIN32) || defined(__CYGWIN__)
86+#if defined(_WIN32) && !defined(__CYGWIN__)
87
88 #include <windows.h>
89 #include <string>
図のようにmecab-0.996
と同じフォルダに配置してwork_dir
の位置からパッチをあてます。
bash
1patch -p1 -d mecab-0.996 < mecab-0.996-cygwin-build.patch
mecab-0.996
のフォルダに入ってビルドします。ここでは$HOME/.local
にインストールする例です。
通常だと/usr/local
にインストールすることが多いと思います。
この例でうまくインストールするためには$HOME/.local/bin
にPATH
が通っていることが前提になります。
--enable-utf8-only
をつけなくてもうまくいくと思います。defファイルの文字コードは次の辞書のインストールが関係します。
bash
1./configure --prefix=$HOME/.local --enable-utf8-only --with-charset=utf8
2make
3make install
次にmecab-ipadic-2.7.0-20070801
をビルドするのですが,二通りあります。
def
ファイルがEUC-JP
でも気にしないのであれば,
bash
1./configure --prefix=$HOME/.local --with-charset=utf-8
2make
3make install
でOKです。
もう一つは全てのデータをあらかじめutf-8
に変換してしまう方法で,次のようなスクリプトを準備します。
from-eucjp-to-utf8.sh
として,mecab-ipadic-2.7.0-20070801
に置きます。
bash
1#!/bin/bash
2
3DICTDIR=./mecab-ipadic-2.7.0-20070801
4for csvfile in $DICTDIR/*.csv ;do
5 if [ ! -e ${csvfile}.bak ]; then
6 mv $csvfile $csvfile.bak
7 fi
8 iconv -f EUC-JP -t UTF-8 ${csvfile}.bak >${csvfile}
9done
10for deffile in $DICTDIR/*.def ;do
11 if [ ! -e ${deffile}.bak ]; then
12 mv $deffile $deffile.bak
13 fi
14 iconv -f EUC-JP -t UTF-8 ${deffile}.bak >${deffile}
15done
16
17DICRC=$DICTDIR/dicrc
18if [ ! -e $DICRC.bak ]; then
19 mv $DICRC $DICRC.bak
20fi
21sed -e 's/EUC-JP/UTF-8/' $DICRC.bak >$DICRC
bash
1/bin/bash from-eucjp-to-utf8.sh
で元のデータが全部UTF-8
に変更されます。
ここで,mecab-ipadic...
フォルダの中に入って
bash
1./configure --prefix=$HOME/.local
2make
3make install
でインストールできます。
ここではutf-8
を指定しないのがミソでutf-8
を指定すると,途中のiconv
に失敗します。
以上のような感じでインストールできるのではないかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。