cmake之管理多版本opencv

一、问题描述:

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`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值