如何处理在源代码中找不到OpenCV
How to handle not finding OpenCV in source code
我构建了一个依赖于OpenCV的C++库。但是,有时我不需要使用OpenCV,并且在没有OpenCV的情况下编译代码。
这个想法是,当 CMake 中的OpenCV_Found
变量为真时,将有一个类似于OpenCV_Found
变量的预处理器变量,但在C++代码中。换句话说,我想做这样的事情:
#ifdef OpenCV_Found
#include <opencv2/core/core.hpp>
#endif
我的问题是:
OpenCV是否提供了类似的变量?还是我必须手动定义它,并将其发送到目标编译标志?
可以使用CMake 将OpenCV_Found
CMake 定义转发到C++源代码。您可以在target_compile_definitions()
中使用生成器表达式,如下所示:
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
预处理器定义。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- 如何处理在源代码中找不到OpenCV
- 从源代码构建 MySQL 连接器/C++(找不到 Boost 库错误)