编译opencv示例:未知的cmake命令ocv_check_dependencies

问题描述 投票:13回答:8

我正在尝试构建源代码包附带的OpenCV示例,我得到以下内容:

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

我确实使用了安装OpenCV

cmake .
make
sudo make install

我得到了一个教程片段(因此我认为它作为库正确安装)。但是,编译样本不起作用。

我想我必须以某种方式配置CMake有“ocv_check_dependencies” - 但是如何?我搞不清楚了!

opencv cmake osx-snow-leopard
8个回答
16
投票

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

OCV_OPTION(BUILD_EXAMPLES“构建所有示例”

-DBUILD_EXAMPLES=ON对我来说工作得很好。


15
投票

我知道了。

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

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

cmake -DBUILD_SAMPLES .

这将打开样品。可以继续使用make,make install。样品可以在建造后在bin找到。

另见FAQ


3
投票

如何编译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


1
投票

mydragonisland的构建说明几乎对我有用;有一个小的重新排序和包括口音:

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

1
投票

宏'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 /的文件的“include”命令。这就是为什么在通过从opencv源的根调用cmake进行编译时宏可用的原因。


1
投票

原因

错误消息上下文:

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

发生此错误消息是因为cmake无法找到ocv_check_dependencies的定义

这就是控制台说Unknown 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()

最快的方法是将上面的这个片段复制到CMakeList.txt文件正上方的ocv_check_dependencies文件中

因此,cmake终于可以理解它是什么了

应该这样做,我希望将来没有其他人会为这个问题烦恼


0
投票

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


0
投票

以下步骤适合我。

导出工具链路径。

cd opencv-3.3.0 / samples

cross_cmake && cross_make

cd opencv-3.3.0 / samples / cpp /

© www.soinside.com 2019 - 2024. All rights reserved.