Я пытаюсь установить opencv 2.4.9 на Ubuntu 18 для поддержки более старого программного обеспечения. После загрузки версии из ссылки SourceForge я создаю папку сборки и выполняю следующую команду cmake.
cmake -D WITH_TBB=OFF -D WITH_V4L=OFF -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=OFF -D BUILD_EXAMPLES=OFF -D WITH_QT=OFF -D WITH_OPENGL=OFF -D WITH_FFMPEG=OFF -D WITH_1394=OFF -D WITH_LIBV4L=OFF ..
Я получаю следующие ошибки:
CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:85 (list):
list GET given empty list
Call Stack (most recent call first):
CMakeLists.txt:77 (include)
CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:86 (list):
list GET given empty list
Call Stack (most recent call first):
CMakeLists.txt:77 (include)
CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:89 (math):
math cannot parse the expression: "*100 + ": syntax error, unexpected
exp_TIMES, expecting exp_OPENPARENT or exp_NUMBER (1)
Call Stack (most recent call first):
CMakeLists.txt:77 (include)
Я подозревал, что это могло относиться к старой версии cmake, но у меня есть cmake версия 3.1.1.
Это, кажется, известная проблема, связанная с изменением в формате g++ -dumpversion
: посмотрите, например, сбои OpenCV SuperBuild с gcc 7 +. На основе быстрого теста это, кажется, возможно к обходному решению путем редактирования OpenCVDetectCXXCompiler.cmake
файл, изменяясь -dumpversion
кому: -dumpfullversion
. Так, например, если Вы работаете cmake
от из дерева build
подкаталог:
sed -i.bak 's/dumpversion/dumpfullversion/' ../cmake/OpenCVDetectCXXCompiler.cmake
С другой стороны, установите более старый g ++ версия и скажите cmake
использовать его через -DCMAKE_CXX_COMPILER
отметьте, как предложено, здесь Настраивают ошибку “g ++, версия не может быть определена”