构建并安装OpenCV。默认安装路径与头文件的预期路径不同

时间:2013-04-28 10:38:30

标签: opencv cmake

刚刚构建了OpenCV并安装了它。我现在正试图包含它的标题并遇到麻烦。

在没有任何选项的情况下调用cmake会产生与配置的配置 CMAKE_INSTALL_PREFIX /usr/local

然而,主要的OpenCV标题,具有类似

的行
[vorac@laptop build]$ cat /usr/local/include/opencv2/opencv.hpp  
#include "opencv2/core.hpp"

搜索到的文件位于父目录中,因此无法包含:

[vorac@laptop build]$ ls /usr/local/include | grep core.hpp
core.hpp
motion_core.hpp

安装出了什么问题?

使用的软件:
Fedora18
ccmake版本2.8.10.2
OpenCV commit 416fb50594003dba822a59fbc77b2d5b4e99f1a5

1 个答案:

答案 0 :(得分:1)

我更倾向于将此作为评论,因为它比其他任何内容更具推测性,但它太大了,可以帮助你。所以,看起来它可能不是你做过的事情,更像是OpenCV cmake代码中的错误。

commit #5170620看起来像“cmake / OpenCVModule.cmake”的更改影响了包含文件的安装。如果新的正则表达式失败,${CMAKE_MATCH_1}的值可能为空,这意味着以下行将模块的标题安装到${OPENCV_INCLUDE_INSTALL_PATH}(默认情况下为/ usr / local / include)。

我注意到旧的正则表达式"^(opencv2/.*)/[^/]+.h(..)?$"/之后有一个(opencv2/.*),而新的正则表达式/没有。{/ p>

我建议更改相关行,以包含可能缺少的if(hdr2 MATCHES "^(opencv2/.*)/[^/]+.h(..)?$" AND NOT hdr2 MATCHES "opencv2/${the_module}/private.*")

if(hdr2 MATCHES "^(opencv2/.*)/[^/]+.h(..)?$")

或将整行还原为以前的版本:

{{1}}

之后,重新运行CMake并再次安装OpenCV。