如何在CMakeLists.txt中指定特定版本的OpenCV安装路径?
如何在CMake中指定使用特定版本的OpenCV
这问题我之前踩过坑,其实有几种简单的方法能让CMake精准定位到你要的OpenCV 3.1版本,给你整理一下:
方法1:在CMakeLists.txt里直接指定配置文件路径
CMake查找OpenCV核心是找OpenCVConfig.cmake这个配置文件,你3.1版本安装在/usr/local/opencv3.1,它的配置文件大概率在/usr/local/opencv3.1/share/OpenCV目录下(和你3.4版本的结构一致)。
关键步骤:在你的CMakeLists.txt里,把设置OpenCV_DIR的代码放在find_package(OpenCV ...)之前,比如:
# 先指定3.1版本的配置文件路径 set(OpenCV_DIR "/usr/local/opencv3.1/share/OpenCV") # 再查找OpenCV find_package(OpenCV 3.0 REQUIRED)
这样CMake就会优先去你指定的路径找配置文件,自然就会加载3.1版本了。
方法2:通过cmake命令行临时指定版本
如果你不想改动CMakeLists.txt,只是临时想用3.1版本编译,可以在执行cmake的时候通过-D参数传入变量:
cmake -DOpenCV_DIR=/usr/local/opencv3.1/share/OpenCV ..
这种方式适合测试不同版本的场景,不用修改代码。
小技巧:确认3.1版本配置文件的位置
如果不确定/usr/local/opencv3.1/share/OpenCV是不是正确路径,可以用find命令快速查找:
find /usr/local/opencv3.1 -name "OpenCVConfig.cmake"
找到准确路径后再用上面的方法设置就万无一失了。
最后提醒一下:一定要保证set(OpenCV_DIR)在find_package之前执行,不然CMake已经先找到3.4版本了,再设置就无效啦!
内容的提问来源于stack exchange,提问作者Gerry
相关产品推荐
相关产品推荐

