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