关闭

cmake之管理多版本opencv

标签: cmakeopencv
937人阅读 评论(0) 收藏 举报
分类:

一、问题描述:

1、我要使用orb-slam2,依赖DBoW2,DBoW2依赖DLib,不就是装软件嘛,谁不会啊~
2、

git clone https://github.com/dorian3d/DBoW2.git 
cd DBoW
mkdir build
cd build
cmake ..
make

报错了,找不到头文件。

二、问题分析

使用opencv的版本不对,这个库使用了最新的版本,正好我最近编译过最新的opencv,修改CMakeLists.txt文件就可以解决问题。

三、解决步骤

CMakeLists.txt使用的是find_package来链接动态库,find_package会去寻找FindOpenCV.cmake文件。然而我还装了cuda版本的opencv,默认使用find_package下,是使用FindCUDA.cmake。如果修改这个文件,势必会影响cuda其他的程序。所以,决定用pkg-config来链接动态库。

修改这句话:

 find_package(OpenCV REQUIRED)

find_package(PkgConfig)
pkg_check_modules(OpenCV opencv>=3.1.0)
set(OpenCV_LIBS ${OpenCV_LIBRARIES})
LINK_DIRECTORIES(${OpenCV_LIBDIR}) 

为了让pkg-config找到正确版本的opencv,需要把正确版本的opencv的opencv.pc文件放到PKG_CONFIG_PATH路径下,我的是

/usr/lib/x86_64-linux-gnu/pkgconfig

再次编译,可以顺利通过。

四、其他

pkg-config的常见用法是直接接在gcc/g++命令里面,如:

g++ test.cpp -o test `pkg-config --cflags --libs opencv`
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场