2

刚刚构建了 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

4

1 回答 1

1

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

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

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

我建议更改有问题的行以包括可能丢失的/

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

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

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

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

于 2013-04-28T17:55:57.173 回答