CMake下指定Opencv版本
关键文件:OpenCVConfig.cmake。在opencv编译好后,所在目录中一般会有一个叫OpenCVConfig.cmake的文件,这个文件中指定了CMake要去哪里找OpenCV,其.h文件在哪里等。
只要让CMake找到这个文件,这个文件就指定了Opencv的所有路径,因此可以在CMakeLists.txt中设置OpenCV_DIR为包含OpenCVConfig.cmake的目录,如在我的C++工程CMakeLists.txt中添加
set(OpenCV_DIR"/home/ubuntu/src/opencv-3.1.0/build")
我的OpenCVConfig.cmake在
/home/ubuntu/src/opencv-3.1.0/build
注意,将其添加在project(MyProjectName)之前。
如CMakeLists.txt内容如下:
cmake_minimum_required(VERSION2.8)
#setOpenCV_DIR
set(OpenCV_DIR"/home/ubuntu/src/opencv-3.1.0/build")
project(main )
find_package( OpenCVREQUIRED)
#print OpenCV_VERSION on terminal
message(STATUS“OpenCV_Version: ” ${OpenCV_VERSION})
add_executable(mainmain.cpp )
target_link_libraries( main ${OpenCV_LIBS} )
因此,我们期望使用哪个版本的Opencv,只要找到对应的OpenCVConfig.cmake文件,并且将其路径添加到工程的CMakeLists.txt中即可了。
从而实现了多个版本OpenCV的使用。
备注:
1.运行make之后,运行可执行程序时,可能会提示找不到库的错误(notfindlibopencv-core.so.3.1之类),那时因为动态库目录不在程序搜索库目录的路径下,系统默认的动态库搜索路径有/usr/local/lib等,opencv-2.4.12生成的库都在/usr/local/lib目录,但opencv-3.1.0的库在/home/ubuntu/src/opencv-3.1.0/build/lib中,不在搜索路径中,因此,只需要添加其为搜索路径即可。添加方法为/etc/ld.so.conf.d/libc.conf中添加/home/ubuntu/src/opencv-3.1.0/build/lib。libc.conf文件内容如下:
#
libc default configuration
/usr/local/lib
/home/ubuntu/src/opencv-3.1.0/build/lib
2.在使用上述方法是,编译安装opencv时,最后不必执行sudomake install .若执行该命令,则会将编译好的opencv默认安装到/usr/local/目录下。
参考网站:http://blog.csdn.net/jay463261929/article/details/53860593