如何处理在源代码中找不到 OpenCV
Posted
技术标签:
【中文标题】如何处理在源代码中找不到 OpenCV【英文标题】:How to handle not finding OpenCV in source code 【发布时间】:2019-11-27 21:23:41 【问题描述】:我已经构建了一个依赖于 OpenCV 的 C++ 库。但是,有时我不需要使用 OpenCV,我在没有它的情况下编译代码。
想法是,当 CMake 中的 OpenCV_Found
变量为 true 时,会有一个类似于 OpenCV_Found
变量的预处理器变量,但在 C++ 代码中。换句话说,我想做这样的事情:
#ifdef OpenCV_Found
#include <opencv2/core/core.hpp>
#endif
我的问题是:
OpenCV 是否提供类似的变量?还是我必须手动定义它,并将其发送到目标编译标志?
【问题讨论】:
【参考方案1】:您可以使用 CMake 将OpenCV_Found
CMake 定义转发到您的 C++ 源代码。您可以像这样在target_compile_definitions()
中使用generator expression:
add_executable(MyExe $MY_SOURCES)
target_compile_definitions(MyExe PUBLIC $<$<BOOL:$OpenCV_Found>:OpenCV_Found>)
当$OpenCV_Found
CMake 变量的计算结果为 True 时,这会将 OpenCV_Found
作为预处理器定义添加到 MyExe
目标。当 CMake 变量 $OpenCV_Found
计算结果为 False(不区分大小写等于 0
、FALSE
、OFF
、N
、NO
、IGNORE
或 NOTFOUND
)时,OpenCV_Found
预处理器定义被省略。
【讨论】:
以上是关于如何处理在源代码中找不到 OpenCV的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 opencv 3.0 beta 中找不到 balanceWhite?
在 django(使用 python-opencv)项目中找不到人脸(人脸检测)