ubuntu下同时安装和使用不同版本的库

工作中我们时常需要在不同版本的库间切换,如果同时安装了多个版本的库,将会让我们的工作更加轻松.本文介绍了在ubuntu下安装并使用不同版本库的方法

ubuntu下常用的库安装位置有两个:/usr和/usr/local,通过apt-get安装的库位于/usr,自己make install的库通常位于/usr/local下.安装位置通常按照include,lib,share文件夹组织,对于开发者来说应该不会陌生.include和lib分别存放头文件和库,而cmake的模块文件通常在share里.如果我们要将库安装到自己指定的位置只需要在cmake时给CMAKE_INSTALL_PREFIX赋值即可,cmake -DCMAKE_INSTALL_PREFIX=/usr/my,这样库就安装到/usr/my下了,在使用时find_package是找不到这个位置的,需要指定模块的位置才能正常使用.

使用

find_package()命令的原理是找到模块文件,并从中提取变量,之后我们就能正常使用OpenCV_LIB等变量了.

模块文件后缀是cmake,通常位于/usr/share或/usr/local/share下,cmake默认搜索的也是这两个位置

尝试以下cmakelist,将搜索出系统中所有opencv模块的位置以及版本

     PROJECT(test)
     CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
      
     FIND_PACKAGE(OpenCV 8 REQUIRED)#尝试找一个不存在的版本

通常我们需要使用特定版本,在cmake之前赋值OpenCV_DIR变量为自己需要的opencv版本的模块位置即可

     PROJECT(test)
     CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

     SET(OpenCV_DIR /usr/share/OpenCV/)#这里写自己需要的opencv版本的模块位置
     FIND_PACKAGE(OpenCV REQUIRED)

     MESSAGE(${OpenCV_VERSION})#输出看一下
     MESSAGE(${OpenCV_DIR})