tyokota.lab

適当に綴ります

OpenCVとかPCLのライブラリでバージョン違いを共存させる方法

バージョン違いで保持していたい時の備忘録
(ZEDがopencv3.1.0依存だったので...)

OpenCVもPCLもやり方は同じ

今回はOpenCV-3.1.0とOpenCV-3.2.0の共存です。

それぞれGitで取ってくる(名前は変えておくこと)
gitでopencvのバージョンを3.2から3.1に下げる場合は

git reset --hard 92387b1ef8fad15196dd5f7fb4931444a68bc93a

でリビジョン下げる

cd /home/username/libs
cd opencv-3.1.0
mkdir release
cd release
mkdir installed
ccmake ..

cmakeの設定
CMAKE_INSTALL_PREFIX=/home/username/libs/opencv-3.1.0/release/install

opencv3.1.0とcuda8.0の組み合わせの場合、
GraphCut deprecated in CUDA 7.5 and removed in 8.0 by jet47 · Pull Request #6510 · opencv/opencv · GitHub
上記場所を書き換え

cmake.
make -j8
make install

opencv-3.2.0でも同じようにする(ソースの書き換えは不要)


次にパスを通す

通常利用はopencv-3.2.0を使って欲しいので.bashrcに3.2を後に書き込んでおく

CV_LIB_PATH=~/libs/opencv-3.1.0/release/installed/lib
export PKG_CONFIG_PATH=$CV_LIB_PATH/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$CV_LIB_PATH:$LD_LIBRARY_PATH

CV_LIB_PATH=~/libs/opencv-3.2.0/release/installed/lib
export PKG_CONFIG_PATH=$CV_LIB_PATH/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$CV_LIB_PATH:$LD_LIBRARY_PATH

これでまずopencv-3.2.0を見に行って、なければopencv-3.1.0を見に行くようになる。
順番大事。

ホントはコンパイルごとにスクリプト起動のほうが良いけど、いちいちめんどうなのでこれで。

参考:http://d.hatena.ne.jp/taksei/20160903/1472875112