如何为CMakeLists.txt设置特定的包路径

时间:2018-04-19 07:51:10

标签: cmake

我的同事写了CMakeLists.txt,内容如下:

find_package(OpenCV 3 REQUIRED
  COMPONENTS
    opencv_core
    opencv_imgproc
    opencv_imgcodecs
  CONFIG
)

由于项目需要Opencv3的这些组件,我的同事下载了整个Opencv3,当然,它有效。

但整个Opencv3太大了,所以我只得到必要的lib文件:libopencv_core.so,libopencv_imgproc.so和libopencv_imgcodecs.so并尝试替换整个Opencv3。这三个文件放在这里:/opt/opencv3/

我不知道如何告诉CMakeLists.txt默认在特定路径而不是路径中查找Opencv3的组件。

我完全是编写CMakeLists.txt的新手......

1 个答案:

答案 0 :(得分:1)

CMake find_package()使用两种操作模式(模块和配置)在CMake中查找和配置项目依赖项,如documentation中所述。

在模块模式(不是您的情况)中,它会在Find<package>.cmake中查找CMAKE_MODULE_PATH文件。此文件搜索头文件和库,并在成功时设置必要的CMake变量。

根据CONFIG关键字的要求,您正在使用配置。在配置模式下,CMake会查找<name>Config.cmake文件或<lowercase-name>-config.cmake。 这些配置文件描述了依赖项的版本以及头文件和库模块的位置。

因此,您应该在OpenCVConfig.cmakeopencv-config.cmake中查找CMAKE_PREFIX_PATHOpenCV_DIR。 请注意,在致电set(OpenCV_DIR ...)之前,您必须find_package()