配置 OpenCV 时出现 CMake 错误

CMake error when configuring OpenCV

我正在使用 cmake-gui 尝试构建 opencv,但出现此错误:

1
2
3
4
5
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 文档中找不到与"数学"命令相关的任何内容。

有什么想法吗?

-安德烈斯


看起来有问题的行是

1
  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 设置适当的值

1
2
3
  if(NOT CMAKE_SIZEOF_VOID_P)
    set(CMAKE_SIZEOF_VOID_P 4)  # replace 4 with 8 for 64-bit machine
  endif()

到 cmake/OpenCVGenConfig.cmake 就在第 134 行之前进行 math 调用。这是一个可怕的 hack,我当然不推荐它,但它可以让你在构建 OpenCV 的同时
在邮件列表中寻求正确的答案。

您可以通过运行

获取有关 math 命令的信息

1
cmake --help-command math

并在 CMAKE_SIZEOF_VOID_P 上运行

1
cmake --help-variable CMAKE_SIZEOF_VOID_P