UbuntuでGVimをコンパイルしたよ

以前、何度かVimコンパイルしたのですが、GVimコンパイル出来なかったので久しぶりに試してみたのでした。
で、いろいろ調べてみてやっとできたのでここにメモを。
環境:Ubuntu 12.04 LTS 64bit

リポジトリのクローン

リポジトリをクローンしてきます。

$ hg clone https://vim.googlecode.com/hg ./vim
$ cd ./vim

./configureではまったところとその対処など

GUI版でなくてもコンパイルには必ずlibncurses5-devが必要なので前もって入れておきます。

$ sudo apt-get install -y libncurses5-dev


./configureするんですが、結局makeしてみてもGUIなしでコンパイルされる始末。

$ ./configure (略)
--x-includes=/usr/include:/usr/include/X11:/usr/include/xorg \
--x-libraries=/usr/lib:/usr/lib/X11:/usr/lib/xorg

とかつけても全然だめで……


何が足りなかったかというと、そもそもdev系のパッケージが足りなかったようです。
xorg-devが足りなかったのだと思うのですけど、一度に両方入れてしまったので、libgtk2.0-devが必要なのか不必要なのかわからずじまい。また今度試して見ることにします。

$ sudo apt-get install -y libgtk2.0-dev xorg-dev

これらを入れてしまえば--x-includesとか--x-librariesとかは特に必要ないみたい。


あとハマったのが、最初にGUIなしの./configureをしてしまったのでsrc/auto/config.cacheが残っていたことですかね。
libgtk2.0-devとかxorg-devを入れたのにおかしいなあと思っていたら、このファイルが残っていたせいでヘッダファイルなどを見に行っていなかったようなので削除します。

$ rm -f src/auto/config.cache

いざコンパイル

準備ができたところでいざコンパイル

$ ./configure \
  --prefix="$HOME/Binary/Vim" \
  --disable-darwin \
  --disable-selinux \
  --enable-perlinterp=yes \
  --enable-pythoninterp=yes \
  --enable-tclinterp \
  --enable-rubyinterp=yes \
  --enable-cscope \
  --disable-netbeans \
  --enable-multibyte \
  --enable-xim \
  --enable-fontset \
  --enable-gui=auto \
  --enable-gtk2-check \
  --enable-gnome-check \
  --with-features=huge \
  --with-compiledby="sasa+1 <sasaplus1 [at] gmail.com>" \
  --with-x \
  --with-tlib=ncurses
$ make -j 2 all install

一応CPUの数だけ、というわけで-j 2とかを指定したりとか。あとmake all installはmake && make installのほうが良いかも。
何度かmakeしてるならmake cleanもしておいたほうが良いかなー。


perl/python/tcl/rubyのうち一部はdynamicでコンパイルしたほうがよかったのかなー。よくわかってないけど。
てかLuaがなくて--enable-luainterp=yes/dynamicが通らなかった……

実行してみる

$ $HOME/Binary/Vim/bin/gvim

動いた!


今度はMacVimをコンパイルしてみたいかなー。まあHomebrew使えばすぐなんだけど。


参考:
http://d.hatena.ne.jp/ichii386/20060903/1157285224
http://lsifrontend.blog100.fc2.com/blog-entry-223.html
http://blog.mktime.com/archive/146.html
https://groups.google.com/forum/?fromgroups=#!topic/vim_use/hkRzUvu2XCg