配置OpenCV时出现了CMake错误

3
我正在使用cmake-gui尝试构建opencv,但出现了以下错误:
CMake Error at cmake/OpenCVGenConfig.cmake:134 (math):
  math cannot parse the expression: "8 * ": syntax error, unexpected $end,
  expecting exp_OPENPARENT or exp_NUMBER (4)
Call Stack (most recent call first):
  CMakeLists.txt:649 (include)

这是我第一次使用cmake,所以我不知道该去哪里寻求帮助。我查看了OpenCVGenConfig.cmake文件,但对其语法不了解。我删除了所有内容,再次下载了opencv tarball文件,但仍然出现相同的错误。因此,似乎问题不在OpenCVGenConfig.cmake文件中的打字错误或错误,而在于"math"命令的处理上。在Cmake文档中似乎找不到任何与"math"命令相关的信息。 有任何想法吗?
-Andres

你使用的是哪个版本的CMake?请确保使用最新版本(目前为2.8)来构建当前版本的OpenCV。虽然文档中说早期版本也可以,但在低于2.8的版本上可能会出现一些错误。 - gavinb
1个回答

9

看起来有问题的行是

  math(EXPR SIZEOF_VOID_P_BITS "8 * ${CMAKE_SIZEOF_VOID_P}")

问题似乎在于${CMAKE_SIZEOF_VOID_P}未设置,而它应该表示指针的大小(以字节为单位)。在顶层CMakeLists.txt的开始处调用project命令时应设置它。
我不确定为什么它没有被设置,可能是CMake中的一个错误。如果您还没有使用最新版本的CMake(目前是2.8.8),可以尝试使用它。此外,从命令行运行CMake可能会有所帮助(虽然不应该有区别)。
如果这些方法都无法解决问题,最好向CMake邮件列表寻求建议。
作为绝对的最后一招,您可以通过添加相应的值来设置CMAKE_SIZEOF_VOID_P在您的机器上。
  if(NOT CMAKE_SIZEOF_VOID_P)
    set(CMAKE_SIZEOF_VOID_P 4)  # replace 4 with 8 for 64-bit machine
  endif()

在第134行前,在cmake/OpenCVGenConfig.cmake中添加math调用之前的内容。这是一种可怕的hack,我当然不推荐使用,但它可能使您能够在邮件列表上寻求正确答案的同时构建OpenCV。
运行math命令可以获取有关信息。
cmake --help-command math

通过运行 CMAKE_SIZEOF_VOID_P 进行操作

cmake --help-variable CMAKE_SIZEOF_VOID_P

谢谢您的回复和建议。我会尝试所有的建议。 - Andres Gonzalez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接