编译opencv示例:未知的cmake命令ocv\u check\u依赖项
我正在尝试构建源代码包附带的OpenCV示例,我得到以下信息:编译opencv示例:未知的cmake命令ocv\u check\u依赖项,opencv,cmake,osx-snow-leopard,Opencv,Cmake,Osx Snow Leopard,我正在尝试构建源代码包附带的OpenCV示例,我得到以下信息: CMake Error at CMakeLists.txt:10 (ocv_check_dependencies): Unknown CMake command "ocv_check_dependencies". 我确实使用 cmake . make sudo make install 我得到了一个教程片段(因此我认为它作为库正确安装)。然而,汇编样本并不奏效 我想我必须以某种方式配置CMake,使其具有“ocv\u检查\u
CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
Unknown CMake command "ocv_check_dependencies".
我确实使用
cmake .
make
sudo make install
我得到了一个教程片段(因此我认为它作为库正确安装)。然而,汇编样本并不奏效
我想我必须以某种方式配置CMake,使其具有“ocv\u检查\u依赖性”-但如何配置?我迷路了 我明白了
为了构建示例,必须通过-D
提供cmake来更改其默认配置。我犯的错误是,我试图从samples
目录中执行cmake
构建示例的正确方法是像这样调用cmake(从解包归档文件的根目录中):
这将打开样本。可以继续使用make、make和install。建造后,可在箱中找到样本
另请参见有关OpenCV 2.4.4 beta版的详细信息,根CMakeList.txt文件显示:
OCV_选项(构建示例“构建所有示例”
-DBUILD\u EXAMPLES=ON
对我来说效果很好。如何编译OpenCV示例代码
# For OpenCV 3
cd /path/to/opencv/samples/cpp/
#Compile
g++ -ggdb `pkg-config --cflags --libs opencv` facedetect.cpp -o facedetect
#run
./facedetect
对我有用
mydragonisland的构建说明几乎对我起了作用;只需稍微调整一下顺序,并添加了口音:
g++ facedetect.cpp -o facedetect `pkg-config --libs opencv`
宏“ocv\u检查\u依赖项”在中定义:指向/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) cd xxx/样本2)mkdir构建3)cd构建4)cmake。。5) 制造
现在它起作用了。我们无法在其源文件下生成单个项目 理由
错误消息上下文:
CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
Unknown CMake command "ocv_check_dependencies".
发生此错误消息的原因是cmake找不到ocv\u check\u依赖项的定义
这就是为什么控制台显示未知的CMake命令
解决方案
如果cmake无法找到定义了ocv\u检查\u依赖项的位置
正如@Nick Hockings所说:
ocv\u check\u dependencies
是在Your/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\u check\u dependencies
的正上方
因此,cmake最终能够理解它是什么
这样就可以了,我希望以后不会有人再为这个问题烦恼了以下步骤对我很有用
导出工具链路径
cd opencv-3.3.0/样本
克罗斯科马克&
十字架
cd opencv-3.3.0/samples/cpp/您尝试过源代码外版本吗?谢谢!不过,我发现了几个拼写错误。缺少空格和示例,而不是示例。你是说cmake-D BUILD\u示例。
?在我的机器上,它不能与空格一起工作。他们说的是样本,实际上是“构建样本”。根据文档,它是-D BUILD\u SAMPLES=ON
,但是上面的方法对我有效。我尝试了BUILD\u SAMPLES
,但它不起作用,所以我查看了CMakeLists文件,看到了BUILD\u示例
。我用的是Unix源代码,也许你用的是另一个?不管怎样,这些评论都会出现在这里,供有此问题的其他人参考。看起来您正在源目录中运行cmake。不推荐AFAIK@drewish谢谢你的建议。这应该是公认的答案<代码>-DBUILD\u EXAMPLES=ON
用于所有文档。请参阅示例。如果我的答案对您有所帮助,请投赞成票,以便其他用户知道。谢谢,尼克苏,这是我的荣幸
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()