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