OpenCV SuperBuild fails with gcc 7+

Description

At some point gcc changed the output of its -dumpversion argument. This breaks OpenCV's cmake/OpenCVDetectCXXCompiler.cmake which parses this output.

When building OTB SuperBuild the error in OPENCV/src/OPENCV-stamp/OPENCV-configure-err.log is:

CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:82 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:91 (include)


CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:83 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:91 (include)


CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:86 (math):
  math cannot parse the expression: "*100 + ": syntax error, unexpected
  exp_TIMES, expecting exp_PLUS or exp_MINUS or exp_OPENPARENT or exp_NUMBER
  (1)
Call Stack (most recent call first):
  CMakeLists.txt:91 (include)


CMake Error at cmake/OpenCVCompilerOptions.cmake:21 (else):
  A duplicate ELSE command was found inside an IF block.
Call Stack (most recent call first):
  CMakeLists.txt:432 (include)

This is fixed in more recent version of OpenCV. See this commit from 2015 for example: https://github.com/opencv/opencv/commit/bbe007159ad6b99e15f47171b7b6be7c892ca9fa#diff-b119273dbadd24865d7eb8b2c2aa1f47

The latest version of that file in OpenCV does not even rely on -dumpversion anymore.

What is the proper OTB fix? A superbuild patch or maybe upgrade opencv?

Steps to reproduce

SuperBuild with gcc 7.

Configuration information

Ubuntu 17.10, gcc 7.

Edited May 24, 2018 by Victor Poughon
Assignee Loading
Time tracking Loading