gpt4 book ai didi

c++ - 如何知道 CMake 找到的库的版本?

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:26 25 4
gpt4 key购买 nike

我目前正在开发一个使用 CMake 文件和 OpenCV 以及其他库的 C++ 项目。我的目标是能够使用版本 2.4.something 和 3.0 编译我的代码。

为此,我想到了使用CMake配置来设置一个变量,指示在配置阶段找到的OpenCV包是否具有大于或等于3.0的版本。使用这个变量,我可以包含或排除我的代码的临时部分。

但是我无法在任何地方找到如何在 CMake 文件中知道找到的包的版本。

我的 CMake 文件的伪代码如下所示:

....
find_package(OpenCV 2.4 REQUIRED)
if(OpenCV_Version >= 3)
set (OpenCV_3 1)
else
set (OpenCV_3 0)
endif(OpenCV_Version)
....

是否可以这样做,还是我做错了什么?

最佳答案

来自 find_package 上的 CMake 文档:

If the version is acceptable the following variables are set:

<package>_VERSION
full provided version string
<package>_VERSION_MAJOR
major version if provided, else 0
<package>_VERSION_MINOR
minor version if provided, else 0
<package>_VERSION_PATCH
patch version if provided, else 0
<package>_VERSION_TWEAK
tweak version if provided, else 0
<package>_VERSION_COUNT
number of version components, 0 to 4

您可以使用带有完整版本字符串的任一变量 OpenCV_VERSION 来使用 if() 命令的 VERSION_* 模式进行比较:

if(OpenCV_VERSION VERSION_LESS "3.0")
# 2.4 version
else()
# 3.0 version
endif()

或带有数字比较的版本组件变量:

if(OpenCV_VERSION_MAJOR LESS 3)
# 2.4 version
else()
# 3.0 version
endif()

关于c++ - 如何知道 CMake 找到的库的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34138886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com