ubuntu系统OpenCV多版本管理

CMake下指定Opencv版本

  1. 关键文件:OpenCVConfig.cmake。在opencv编译好后,所在目录中一般会有一个叫OpenCVConfig.cmake的文件,这个文件中指定了CMake要去哪里找OpenCV,其.h文件在哪里等。该文件一般存在于路径xx/share/OpenCV中,其中xx表示指定的安装路径中,如cmake时指定-D CMAKE_INSTALL_PREFIX=/usr/local,则OpenCVConfig.cmake存在于/usr/local/share/OpenCV/路径下。
  2. 只要让CMake找到这个文件,这个文件就指定了Opencv的所有路径,因此设置OpenCV_DIR为包含OpenCVConfig.cmake的目录,如在我的C++工程CMakeLists.txt中添加:
    set(OpenCV_DIR "/usr/local/share/OpenCV/")
    find_package( OpenCV REQUIRED )
  3. 我们期望使用哪个版本的Opencv,只要找到对应的OpenCVConfig.cmake文件,并且将其路径添加到工程的CMakeLists.txt中即可。

Makefile下指定Opencv版本

  1. 关键文件:opencv.pc 。我们常常使用pkg-config –modversion 来查看指定库的版本,比如查看opencv版本pkg-config –modversion opencv。其实pkg-config显示的信息来自于这个库对应的.pc文件,我们可以在xx/lib/pkg-config/ 文件夹下找到opencv.pc,其中xx表示指定的安装路径中,如cmake时指定-D CMAKE_INSTALL_PREFIX=/usr/local,则OpenCVConfig.cmake存在于/usr/local/lib/pkg-config/路径下。
  2. 在makefile中添加如下内容:
COMMON+= -DOPENCV
CFLAGS+= -DOPENCV
LDFLAGS+= `pkg-config --libs opencv`
COMMON+= `pkg-config --cflags opencv`

此外可将OpenCV 2对应的opencv.pc重命名为opencv-2.4.pc,将OpenCV 3对应的opencv.pc重命名为opencv-3.1.pc,当我希望使用OpenCV 3时,makefile中为:

COMMON+= -DOPENCV
CFLAGS+= -DOPENCV
LDFLAGS+= `pkg-config --libs opencv-3.1`
COMMON+= `pkg-config --cflags opencv-3.1`

当我希望使用OpenCV 2时,makefile中为:

COMMON+= -DOPENCV
CFLAGS+= -DOPENCV
LDFLAGS+= `pkg-config --libs opencv-2.4`
COMMON+= `pkg-config --cflags opencv-2.4`

猜你喜欢

转载自blog.csdn.net/u013187057/article/details/80106322