【问题标题】:find_package() - use older version if available, else use newer versionfind_package() - 如果可用,使用旧版本,否则使用新版本
【发布时间】:2017-10-02 18:42:14
【问题描述】:

有标准的 CMake 命令:

find_package(OpenCV REQUIRED)

同时安装 v2 和 v3 时,将选择 v3。

现在,由于各种问题,如果可用,我想使用 OpenCV v2,但如果没有,请转用 OpenCV v3。不幸的是,这不是一个有效的关键字:

find_package(OpenCV 2 AT_LEAST)

一种解决方案可能是:

find_package(OpenCV 2 REQUIRED)
if (NOT OpenCV_FOUND)
    find_package(OpenCV 3 REQUIRED)
endif()

有没有更好的办法?

【问题讨论】:

  • 在解决方案中,第一个find_package() 调用应该是不带 REQUIRED 关键字,否则CMake 会将缺少OpenCV2 视为错误。至于“更好的方法”,我不知道。你目前的解决方案对我来说似乎很好。

标签: opencv cmake


【解决方案1】:

一些基于您的解决方案

find_package(OpenCV 2 EXACT QUIET)
if (NOT OpenCV_FOUND)
    message(STATUS "OpenCV v2 not found. Trying to find OpenCV v3")
    find_package(OpenCV 3 REQUIRED)
endif()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多