如何使用调试标志构建 OpenCV

Posted

技术标签:

【中文标题】如何使用调试标志构建 OpenCV【英文标题】:How to build OpenCV with Debug flags 【发布时间】:2020-08-27 23:48:41 【问题描述】:

我目前正在尝试在 OpenCV 中调试棋盘角检测算法。为此,我已取消注释

#define DEBUG_CHESSBOARD

下面的源代码行。

https://github.com/opencv/opencv/blob/master/modules/calib3d/src/calibinit.cpp

然后我尝试在 Windows 上使用 CMake GUI 进行构建。当我这样做时,我一直遇到错误“无法打开包含文件:'opencv2/highgui.hpp”,这显然是由于上面链接的源代码中的第 89 行(也如下所示)。

#ifdef DEBUG_CHESSBOARD
#include "opencv2/highgui.hpp"

我到处找,不知道如何解决这个问题。文件中有一条相关的评论说

// Requires CMake flag: DEBUG_opencv_calib3d=ON
#define DEBUG_CHESSBOARD

但我不知道如何打开这个标志。

如果有人对此有任何想法,我将不胜感激!非常感谢!

【问题讨论】:

我一直遇到错误“无法打开包含文件您是否设置了编译器包含路径? 我看到模块在这里:github.com/opencv/opencv/tree/master/modules/highgui/include/… 【参考方案1】:

通过修改opencv-master/modules/calib3d/CMakeLists.txt中的CMakeLists.txt解决。

您必须将“list(APPEND debug_modules opencv_highgui)”行移出 if 语句。我确信有一种方法可以直接设置 DEBUG_opencv_calib3d,但我还没有弄清楚,但这个 hacky 解决方案有效。

【讨论】:

以上是关于如何使用调试标志构建 OpenCV的主要内容,如果未能解决你的问题,请参考以下文章

如何使用openCV检测脸颊?

将 OpenCV 构建为项目的一部分 - 调试 (F11) 到 OpenCV 库中

如何查看CMake使用哪些gcc选项?

使用多线程调试 DLL (/MDd) C 运行时库构建静态 Opencv 库

如何在 Jenkins 中使用不同的编译器标志多次执行一个构建?

如何在构建脚本中指定链接器标志/参数?