无法使用opencv_contrib模块完成“ make -j7”

时间:2018-07-27 13:23:49

标签: c++ opencv makefile cmake opencv-contrib

Cmake无法从opencv_contrib编译其他模块。我正在追踪theese instructions。很抱歉,我的询问时间很长,但是请提供有关我的问题的更多信息。 这是我的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用其上万行的Makefile ..和它们的装备来实现。还是也许是错误的(不是很好) GNU / GCC 版本?

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

好吧, img1

也许我可以尝试通过更改make generator来尝试一些事情?

但是在cmake-gui中,我只有这些选择:img2

我还尝试了更多版本的 OpenCV 。我现在尝试的上一个版本是 3.4.0 。 (还有3.4.1和3.4.2.。)还有更多版本的opencv_contrib模块吗?我找不到更多版本。这个版本的opencv_contrib似乎是3.4。

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

0 个答案:

没有答案