動機
なんか手順間違えてる気がするのでちゃんとインストールし直す。
必要な依存パッケージの入手
基本的にはこのコマンドでまとめて入手出来る。
sudo apt-get build-dep libcv-dev
コンパイルしてて無くて困ったパッケージをメモ。
libavformat-dev libavcodec-dev libavfilter-dev libswscale-dev libx264-dev libgstreamer0.10-dev libxvidcore-dev libvorbis-dev libtheora-dev libogg-dev
ソースコードの入手
この記事書いてる現在だとUbuntuでOpenCVのパッケージ(libcv2.3)が用意されているみたいですが、2.4.2を使いたいのと、最新版出た時にさっさと適用できるようにしておきたいのでgitからソースコードを落としてくることにする。
gitからリポジトリのクローンは作業用ディレクトリに移動してこのコマンドで
git clone git://code.opencv.org/opencv.git
コンパイル前に
OpenCVは依存パッケージが多くて、使いたい機能に応じてパッケージを入れる感じみたいなのですが、そんなことしてるとまさかのタイミングでトラブルに見舞われそうなので依存パッケージをまとめて入手しておく。
コンフィグとビルド
ダウンロードしたリポジトリに移動して次のコマンド
cmake CMakeLists.txt
依存パッケージが足りるとか足りないとかはここで全部わかる。とりあえず不足が無いかチェック。なきゃapt-getかググるか。
不足パッケージを導入したら今度はフラグを付けてcmake。
cmake -D BUILD_EXAMPLES=ON -D CMAKE_BUILD_TYPE=RELEASE ./CMakeLists.txt make -j3 sudo make install
2コアのCPUなので3スレッドでmake。makeが終わったらmake installでインストールもしちゃう。
/opt/local以下にインストールしたffmpegに依存させたい場合、方法無いんですかね?
その他漏れてる設定
make installしただけだとpkg-configのパスが通ってないので忘れずに通しておくこと。
それから共有ライブラリのパスを設定するとかすること。
もしかすると
主にffmpegのパスの関係で抜けてる気がする・・・。
というのも、cmakeの段階でffmpeg関連ヘッダがnot foundになっているのに、ビルドの時にどこからffmpegのヘッダ類を見つけてきてるのかちょっと理解できない。
追記 - インストール先を変更したい場合
cmakeのオプションに
-DCMAKE_INSTALL_PREFIX=/opt/...
みたいな感じのを与えてやれば良い。