Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为CMakeLists.txt设置特定的包路径_Cmake - Fatal编程技术网

如何为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完全是新手…

CMake
find_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,但我觉得它不是很干净。