首页 > 解决方案 > 无法使用 opencv_contrib 模块完成“make -j7”

问题描述

Cmake 无法从 opencv_contrib 编译额外的模块。我正在按照这些说明进行操作。抱歉我的提问时间太长,但提供了有关我的问题的更多信息。这是我的 CMake 选项的示例:

cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DINSTALL_C_EXAMPLES=OFF \
-DINSTALL_PYTHON_EXAMPLES=OFF \
-DBUILD_EXAMPLES=OFF
-DOPENCV_EXTRA_MODULES_PATH=/home/luke/cv/opencv_contrib/modules  ..

到这里为止还好。已配置。生成(可能基本上带有一些警告等):

-- Configuring done
-- Generating done
-- Build files have been written to: /home/luke/cv/opencv-3.4.0/build

但是当我进入构建目录“make -j7”

Scanning dependencies of target opencv_core_pch_dephelp
[  0%] Built target gen-pkgconfig
[  0%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/Half/half.cpp.o

...(我的问题来了

然后在一个过程中,在来自 opencv_contrib 的第一个模块上,我每次都会得到许多相同的错误:

Scanning dependencies of target opencv_test_reg_pch_dephelp
[ 12%] Building CXX object modules/reg/CMakeFiles/opencv_test_reg_pch_dephelp.dir/opencv_test_reg_pch_dephelp.cxx.o
[ 12%] Building CXX object 3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfStdIO.cpp.o

In file included from /home/luke/cv/opencv_contrib/modules/reg/perf/perf_precomp.hpp:56:0,
                 from /home/luke/cv/opencv-3.4.0/build/modules/reg/opencv_perf_reg_pch_dephelp.cxx:1:
/home/luke/cv/opencv_contrib/modules/reg/include/opencv2/reg/mapperpyramid.hpp:64:114: error: expected ‘;’ at end of member declaration
     CV_WRAP virtual cv::Ptr<Map> calculate(InputArray img1, InputArray img2, cv::Ptr<Map> init = cv::Ptr<Map>()) const CV_OVERRIDE;
                                                                                                                  ^
/home/luke/cv/opencv_contrib/modules/reg/include/opencv2/reg/mapperpyramid.hpp:64:120: error: ‘CV_OVERRIDE’ does not name a type
     CV_WRAP virtual cv::Ptr<Map> calculate(InputArray img1, InputArray img2, cv::Ptr<Map> init = cv::Ptr<Map>()) const CV_OVERRIDE;
                                                                                                                        ^
In file included from /home/luke/cv/opencv_contrib/modules/reg/perf/perf_precomp.hpp:56:0,
                 from /home/luke/cv/opencv-3.4.0/build/modules/reg/opencv_perf_reg_pch_dephelp.cxx:1:
/home/luke/cv/opencv_contrib/modules/reg/include/opencv2/reg/mapperpyramid.hpp:66:35: error: expected ‘;’ at end of member declaration
     CV_WRAP cv::Ptr<Map> getMap() const CV_OVERRIDE;
                                   ^
/home /luke/cv/opencv_contrib/modules/reg/include/opencv2/reg/mapperpyramid.hpp:66:41: error: ‘CV_OVERRIDE’ does not name a type
     CV_WRAP cv::Ptr<Map> getMap() const CV_OVERRIDE;
                                         ^

...

make[2]: *** [modules/reg/CMakeFiles/opencv_test_reg_pch_dephelp.dir/opencv_test_reg_pch_dephelp.cxx.o] Error 1
make[1]: *** [modules/reg/CMakeFiles/opencv_test_reg_pch_dephelp.dir/all] Error 2
make: *** [all] Error 2

我认为 opencv_contrib 中的每个模块都会发生这种情况。好的,但是这种类型的语法错误不能出现在每个模块中..

我有Ubuntu版本14.04LTS并且我正在使用最后发布的CMake 版本 3.12.0。尝试了较旧的并尝试了 cmake-gui 哪个版本大约是 2.8。有谁知道,这可能是什么问题?:( 这个我试过好几次了,不知道怎么解决。

只是在我看来:看起来编译器可能存在问题。我不知道它是否没有像 c++11 这样的关键参数?但这应该 CMake 用他们的 10 万行 Makefile.. 和他们的装备来实现。或者可能是错误的(不是很好)GNU/GCC版本?

我看到我在文件夹/usr/bin/ 文件“ gcc-4.8 ”中。我不知道我是否使用的是 4.8 版,但我在此文件夹中看不到任何其他版本的“gcc-xy”文件。

嗯, img1

也许我可以尝试改变 make generator ?

但是在 cmake-gui 我只有这些选项:img2

我还尝试了更多版本的OpenCV。我现在尝试的最后一个版本是3.4.0。(还有 3.4.1 和 3.4.2 ..)还有更多版本的 opencv_contrib 模块吗?我找不到更多版本。而且这个版本的opencv_contrib好像是3.4。

你认为这个问题可能在哪里?解决这个问题的任何提示?我想在我的项目中使用这些额外的模块。

标签: c++opencvmakefilecmakeopencv-contrib

解决方案


推荐阅读