flannのビルドが通らない(ので頑張って解決した)
はじめに
あんまりLinuxを知らない友人から「flannのビルドが通らないよ~~~~」って言われたので、一緒に頑張って解決することにした。
聞くところによると、普通のバイナリは吐くんだけどmexでコンパイルしてくれないんだ~~とのこと。matlabとかmexとかあんまり詳しくないんだけれど・・・って感じだけど頑張ってみることにした。
flannのユーザーマニュアルによれば、
$ cd flann-x.y.z-src $ mkdir build $ cd build $ cmake .. $ make
でできるよ、と書いてある。まぁオーソドックスな手順だし、こんなとこでつまづかないっしょ~~って思っていたら
CMake Warning at src/matlab/CMakeLists.txt:79 (message): Cannot find MATLAB or Octave instalation. Make sure that the 'bin' directory from the MATLAB instalation or that mkoctfile is in PATH
なんてコワーイWarningが出ていました。matlabのインストールフォルダがわからないようってことでしょうか。
matlab
当然matlabはインストールされているので、まずはそのインストールディレクトリを探そう。とりあえず、
$ whereis matlab
ってして、出てきたリンクをたどる。と、/etc/alternatives/matlab -> /usr/local/MATLAB/R2015a/bin/matlab*
という出力がされていたので、/usr/local/MATLAB/R2015a/bin/
に本体があるということがわかりましたね。
エラーメッセージの正体
matlabはインストールされているのに、なんであんなメッセージを吐いたんだろう・・・と思ってflann/src/matlab/CMakeLists.txtを見てみると、どうやらmexとmexextのバイナリがあるフォルダを見て、それが一致していないと「matlabがインストールされていません」というエラーがでるようになっているみたいだった。なんじゃそりゃ
解決
というわけで、mexとmexextのパスを正しくcmakeに伝えてあげればよいみたい。
$ cmake -DMEX_CMD=/usr/local/MATLAB/R2015a/bin/mex -DMEXEXT_CMD=/usr/local/MATLAB/R2015a/bin/mexext ..
でちゃんと通るようになると思う。あとはmakeするだけ。
-- Found MATLAB at: /usr/local/MATLAB/R2015a/bin
ってログにちゃんと出てくれればOKです。
おわりに
タスク山盛りで人の面倒なんて見てる場合じゃないのに、見てしまいました。そこらへんの優先順位をつけるの、苦手かもしれない。