如何为CMakeLists.txt设置特定的包路径
我的同事编写了一个如何为CMakeLists.txt设置特定的包路径,cmake,Cmake,我的同事编写了一个CMakeLists.txt,其中包含以下内容: find_package(OpenCV 3 REQUIRED COMPONENTS opencv_core opencv_imgproc opencv_imgcodecs CONFIG ) 由于项目需要Opencv3的这些组件,我的同事下载了整个Opencv3,当然,它可以工作 但是整个Opencv3太大了,所以我只得到了必要的lib文件:libopencv_core.so、libopencv_
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。三个so文件放在这里:/opt/opencv3/
我不知道如何告诉CMakeLists.txt在特定路径而不是默认路径中查找Opencv3的组件
我对编写CMakeLists.txt完全是新手…CMakefind_package()
使用两种操作模式(模块和配置)在CMake中查找和配置项目依赖项,如its中所述
在模块模式下(不是您的情况),它在cmake\u模块路径中查找Find.cmake
文件。此文件搜索头文件和库,并在成功时设置必要的CMake变量
在您的例子中,它使用Config,这是由Config
关键字请求的。在配置模式下,CMake查找Config.CMake
文件或-Config.CMake
。
这些配置文件描述依赖项的版本以及头文件和库模块的位置
因此,您应该在cmake\u PREFIX\u PATH
或opencv\u DIR
中查找OpenCVConfig.cmake
。
请注意,在调用find\u package()
之前,您必须设置(OpenCV\u DIR…
)我已经检查了Config.cmake并找到了有关OpenCV3的路径。但是Config.cmake
文件或-Config.cmake
是自动生成的。所以我认为我应该只修改CMakeLists.txt
。我的问题是如何制作CMakeLists.txt
。我想这些文件是在安装OpenCV时自动生成的。如果您想让它安装更少的库,您必须修改其CMakeLists.txt和config templates config.cmake.in。您不能简单地选择这些库的子集并将其复制到其他位置(您还需要头文件和config.cmake…)。您可以手动调整生成的Config.cmake,但我觉得它不是很干净。