配置OpenCV时出现CMake错误

And*_*lez 3 opencv cmake

我正在使用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)
Run Code Online (Sandbox Code Playgroud)

这是我第一次使用cmake,所以我不知道该转向何处.我查看了OpenCVGenConfig.cmake文件,但我对它的语法一无所知.我吹走了所有东西,再次下载了opencv tarball,但仍然得到了同样的错误.因此,它似乎不是OpenCVGenConfig.cmake文件中的拼写错误/错误,而是处理"math"命令.我似乎无法在Cmake文档中找到与"math"命令相关的任何内容.

有任何想法吗?

-Andres

Fra*_*ser 9

看起来有问题的是

  math(EXPR SIZEOF_VOID_P_BITS "8 * ${CMAKE_SIZEOF_VOID_P}")
Run Code Online (Sandbox Code Playgroud)

${CMAKE_SIZEOF_VOID_P}当它应该以字节为单位指示指针的大小时,问题似乎是未设置的.它应该project在顶级CMakeLists.txt开始附近的命令调用期间设置.

我不确定为什么它没有被设置,它甚至可能是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()
Run Code Online (Sandbox Code Playgroud)

在进行math调用的第134行之前的cmake/OpenCVGenConfig.cmake .这是一个可怕的黑客,我当然不推荐它,但它可以让你建立OpenCV,同时在邮件列表上寻找一个正确的答案.


您可以math通过运行获取有关该命令的信息

cmake --help-command math
Run Code Online (Sandbox Code Playgroud)

然后CMAKE_SIZEOF_VOID_P跑步

cmake --help-variable CMAKE_SIZEOF_VOID_P
Run Code Online (Sandbox Code Playgroud)