使用find_package()链接不同版本的OpenCV

首先明确find_package()有两种搜索模式:

  • Module模式
    搜索CMAKE_MODULE_PATH指定路径下面的FindXXX.cmake文件,在文件中定义了XXX_INCLUDE_DIRS和XXX_LIBRARIES变量的值。

  • Config模式
    搜索XXX_DIR指定路径下面的XXXConfig.cmake文件,在文件中定义了XXX_INCLUDE_DIRS和XXX_LIBRARIES变量的值。

    CMake默认先采用Module模式在CMAKE_MODULE_PATH中进行搜索,其中CMAKE_MODULE_PATH可通过set进行指定路径。若找不到再采用Config模式进行搜索

OpenCV的.cmake文件:
OpenCV使用的是OpenCVConfig.cmake文件,所以对于不同版本的OpenCV,可以先使用 locate OpenCVConfig.cmake查找其位置,确定位置后,在CMakeLists.txt中添例加set(OpenCV_DIR "/opt/ros/kinetic/share/OpenCV-3.3.1-dev")便可找到指定版本的OpenCV。

你可能感兴趣的:(OpenCV)