构建并安装OpenCV。默认安装路径与头文件预期的路径不同
刚刚构建并安装了OpenCV。我现在正试图包括它的标题,我遇到了麻烦 在没有任何选项的情况下调用构建并安装OpenCV。默认安装路径与头文件预期的路径不同,opencv,cmake,Opencv,Cmake,刚刚构建并安装了OpenCV。我现在正试图包括它的标题,我遇到了麻烦 在没有任何选项的情况下调用cmake将生成一个带有 CMAKE\u INSTALL\u前缀/usr/local 但是,主OpenCV标题具有以下行 [vorac@laptop build]$ cat /usr/local/include/opencv2/opencv.hpp #include "opencv2/core.hpp" 搜索到的文件位于父目录中,因此无法包含: [vorac@laptop build]$ ls
cmake
将生成一个带有CMAKE\u INSTALL\u前缀/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
安装出了什么问题
使用的软件:软呢帽18
ccmake版本2.8.10.2
OpenCV commit 416FB505949003DBA822A59FBC77B2D5B4E99F1A5我更愿意发表评论,因为这比其他任何东西都更具猜测性,但它太大了,可能会对您有所帮助。因此,看起来这可能不是您所做的事情,更像是OpenCV cmake代码中的一个bug 对“cmake/OpenCVModule.cmake”的更改似乎影响了包含文件的安装。如果新的正则表达式失败,
${CMAKE\u MATCH\u 1}
的值可能为空,这意味着下面的行将把模块的头安装到${OPENCV\u INCLUDE\u install\u PATH}
(默认为/usr/local/INCLUDE)
我注意到旧的regex“^(opencv2/*)/[^/]+.h(..)?$”
在(opencv2/*)
之后有一个/
,而新的没有
我建议更改有问题的行,包括可能缺少的/
:
if(hdr2 MATCHES "^(opencv2/.*)/[^/]+.h(..)?$" AND NOT hdr2 MATCHES "opencv2/${the_module}/private.*")
或者将整行恢复到以前的版本:
if(hdr2 MATCHES "^(opencv2/.*)/[^/]+.h(..)?$")
之后,重新运行CMake并再次安装OpenCV。您是否检查了编译器中的代码是否指向了正确的文件位置?特别是在结尾处,请参见此设置MVS@GPPK这里的问题是OpenCV头希望其他OpenCV头存在于一个名为“opencv2”的目录中,而它们没有。所以问题纯粹在于OpenCV及其安装。@Fraser,是的,在stable 2.4中,标题位于$prefix/opencv2/中的文件夹中。在不稳定的主机中,它们只是在$prefix中没有结构地转储。我通过克隆origin/2.4-稳定分支修复了我的问题。大师是尚未出生的2.5。不过,我会试试你的建议。@Vorac如果你试了我的答案,但答案是错误的,你能回到这里并添加评论/否决票,这样我就可以删除这个吗?