【问题标题】:Compiling opencv samples: unknown cmake command ocv_check_dependencies编译opencv样本:未知的cmake命令ocv_check_dependencies
【发布时间】:2012-10-20 05:52:03
【问题描述】:

我正在尝试构建源包附带的 OpenCV 示例,我得到以下信息:

CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
  Unknown CMake command "ocv_check_dependencies".

我确实使用

安装了 OpenCV
cmake .
make
sudo make install

我得到了一个教程 sn-p 工作(因此我认为它作为一个库正确安装)。但是,编译示例不起作用。

我想我必须以某种方式将 CMake 配置为具有“ocv_check_dependencies” - 但是如何?我迷路了!

【问题讨论】:

  • 您尝试过源外构建吗?

标签: opencv cmake osx-snow-leopard


【解决方案1】:

以下步骤对我有用。

导出工具链路径。

cd opencv-3.3.0/samples

cross_cmake && cross_make

cd opencv-3.3.0/samples/cpp/

【讨论】:

    【解决方案2】:

    原因

    错误消息上下文:

    CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
      Unknown CMake command "ocv_check_dependencies".
    

    出现这个错误信息是因为cmake找不到ocv_check_dependencies的定义

    这就是为什么控制台说未知的 CMake 命令

    解决方案

    如果 cmake 找不到 ocv_check_dependencies 的定义位置

    就像@Nick Hockings 所说:

    ocv_check_dependenciesYour/OpenCV/path/OpenCVModule.cmake中定义的宏

    macro(ocv_check_dependencies)
      set(OCV_DEPENDENCIES_FOUND TRUE)
      foreach(d ${ARGN})
        if(d MATCHES "^opencv_[^ ]+$" AND NOT HAVE_${d})
          set(OCV_DEPENDENCIES_FOUND FALSE)
          break()
        endif()
      endforeach()
    endmacro()
    

    最快的方法是将上面的这个 sn-p 复制到您的 CMakeList.txt 文件正上方 ocv_check_dependencies 所在的位置

    因此,cmake终于可以明白它是什么了

    这应该可以解决问题,我希望以后没有其他人会打扰这个问题

    【讨论】:

      【解决方案3】:

      我遇到了类似的错误。我的方法如下: 1) cd xxx/samples 2) mkdir build 3) cd build 4) cmake .. 5) make 现在它起作用了。我们无法在其源文件下构建单个项目。

      【讨论】:

        【解决方案4】:

        如何编译OpenCV示例代码?

        # For OpenCV 3 
        cd /path/to/opencv/samples/cpp/
        #Compile
        g++ -ggdb `pkg-config --cflags --libs opencv` facedetect.cpp -o facedetect
        #run
        ./facedetect
        

        为我工作。

        googled from this link

        【讨论】:

        • @drewish 谢谢你的建议。
        【解决方案5】:

        宏'ocv_check_dependencies'定义在:your_path_to/opencv/cmake/OpenCVModule.cmake

        # ensures that all passed modules are available
        # sets OCV_DEPENDENCIES_FOUND variable to TRUE/FALSE
        macro(ocv_check_dependencies)
          set(OCV_DEPENDENCIES_FOUND TRUE)
          foreach(d ${ARGN})
            if(d MATCHES "^opencv_[^ ]+$" AND NOT HAVE_${d})
              set(OCV_DEPENDENCIES_FOUND FALSE)
              break()
            endif()
          endforeach()
        endmacro()
        

        顶级 CMakeLists.txt 包含来自 opencv/cmake/ 文件的“包含”命令。这就是为什么当您通过从 opencv 源的根目录调用 cmake 进行编译时宏可用的原因。

        【讨论】:

        • 如果我的回答对您有帮助,请投上一票,让其他用户知道。谢谢,尼克
        • 当然,这是我的荣幸
        【解决方案6】:

        mydragonisland 的构建说明几乎对我有用;有轻微的重新排序并包括重音:

        g++ facedetect.cpp -o facedetect `pkg-config --libs opencv`
        

        【讨论】:

          【解决方案7】:

          实际上对于 OpenCV 2.4.4 beta,根 CMakeList.txt 文件说:

          OCV_OPTION(BUILD_EXAMPLES "构建所有示例"

          -DBUILD_EXAMPLES=ON 对我来说效果很好。

          【讨论】:

          • 这应该是公认的答案。 -DBUILD_EXAMPLES=ON 用于所有文档。参见例如the linux tutorial
          【解决方案8】:

          我明白了。

          为了构建示例,必须通过-D 提供 cmake 的默认配置。我做错的是我试图从samples 目录中执行cmake。

          构建示例的正确方法是像这样调用 cmake(从解压存档的根目录中):

          cmake -DBUILD_SAMPLES .
          

          这将打开采样。可以使用 make 进行安装,然后进行安装。构建完成后可以在bin找到样本。

          另见FAQ

          【讨论】:

          • 谢谢!不过,我发现了几个错别字。遗漏的空间和示例而不是示例。你的意思是cmake -D BUILD_EXAMPLES .
          • 在我的机器上它不能使用空格。他们谈到样本,实际上是“BUILD_SAMPLES”。根据文档,它是-D BUILD_SAMPLES=ON,但以上内容对我有用。
          • 我尝试了BUILD_SAMPLES,但它不起作用,所以我查看了 CMakeLists 文件并看到了BUILD_EXAMPLES。我使用的是 Unix 源,也许你正在使用另一个?无论如何,这些 cmets 将在这里为遇到此问题的其他人提供服务
          • 您似乎在源目录中运行 cmake。不推荐 AFAIK
          猜你喜欢
          • 2010-10-12
          • 1970-01-01
          • 1970-01-01
          • 2021-01-24
          • 2021-06-05
          • 2019-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多