构建并安装OpenCV.默认安装路径与头文件所期望的不同



刚刚构建了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 version 2.8.10.2
OpenCV commit 416fb50594003dba822a59fbc77b2d5b4e99f1a5

我更愿意把它作为一个评论,因为它比其他任何东西都更像是猜测,但是它太大了,它可能对你有帮助。所以,它看起来可能不是你做过的事情,更像是OpenCV cmake代码中的错误。

提交#5170620看起来像对"cmake/OpenCVModule"的更改。Cmake "影响了包含文件的安装。如果新的正则表达式失败,${CMAKE_MATCH_1}的值可能是空的,这意味着下面的行将安装模块的头到${OPENCV_INCLUDE_INSTALL_PATH}(默认情况下是/usr/local/include)。

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

我建议修改有问题的行,包括可能缺失的/:

if(hdr2 MATCHES "^(opencv2/.*)/[^/]+.h(..)?$" AND NOT hdr2 MATCHES "opencv2/${the_module}/private.*") 

或者将整行恢复到之前的版本:

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

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

最新更新