我的同事写了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的新手......
答案 0 :(得分:1)
CMake find_package()
使用两种操作模式(模块和配置)在CMake中查找和配置项目依赖项,如documentation中所述。
在模块模式(不是您的情况)中,它会在Find<package>.cmake
中查找CMAKE_MODULE_PATH
文件。此文件搜索头文件和库,并在成功时设置必要的CMake变量。
根据CONFIG
关键字的要求,您正在使用配置。在配置模式下,CMake会查找<name>Config.cmake
文件或<lowercase-name>-config.cmake
。
这些配置文件描述了依赖项的版本以及头文件和库模块的位置。
因此,您应该在OpenCVConfig.cmake
或opencv-config.cmake
中查找CMAKE_PREFIX_PATH
或OpenCV_DIR
。
请注意,在致电set(OpenCV_DIR ...)
之前,您必须find_package()
。