【问题标题】:How to handle not finding OpenCV in source code如何处理在源代码中找不到 OpenCV
【发布时间】: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 是否提供类似的变量?还是我必须手动定义它,并将其发送到目标编译标志?

【问题讨论】:

    标签: c++ opencv cmake c-preprocessor


    【解决方案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(不区分大小写等于 0FALSEOFFNNOIGNORENOTFOUND)时,OpenCV_Found预处理器定义被省略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      相关资源
      最近更新 更多