CMake下指定Opencv版本
- 关键文件: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/
路径下。 - 只要让CMake找到这个文件,这个文件就指定了Opencv的所有路径,因此设置OpenCV_DIR为包含OpenCVConfig.cmake的目录,如在我的C++工程CMakeLists.txt中添加:
set(OpenCV_DIR "/usr/local/share/OpenCV/")
find_package( OpenCV REQUIRED )
- 我们期望使用哪个版本的Opencv,只要找到对应的OpenCVConfig.cmake文件,并且将其路径添加到工程的CMakeLists.txt中即可。
Makefile下指定Opencv版本
- 关键文件: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/
路径下。 - 在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`