cmake - 在 CMake 中对版本字符串进行排序
问题描述
我正在将一个 qmake 项目转换为 cmake,并且我能够让它工作,除了相当于!versionAtLeast(QT_VERSION, 5.11): error("Use at least Qt version 5.11"
.
这里的问题是我目前正在使用用户提供的变量-DQt5_PREFIX=/path/to/Qt5/prefix
来通知 CMake Qt 库的位置。在 macOS 中,这是/Applications/Qt5/5.xx.x/clang_64
默认设置。
我想在我的 cmake 脚本中实现的是一个功能如下:
set(Qt_ROOT "/Applications/Qt")
GetQt5Prefix(Qt5_PREFIX ${Qt_ROOT} version_spec)
message("use Qt5 from ${Qt5_PREFIX}")
# suppose that in /Applications/Qt,
# I have three Qt: 5.11.2, 5.10.3 5.12.1
# the above will print "use Qt5 from"
# 5.12.1 if version_spec is 5
# 5.11.2 if version_spec is 5.11
# empty if version_spec is 5.10.1
从我目前所掌握的情况来看,我认为这个功能应该做
- glob 在 Qt5_ROOT 中查找所有看起来像版本字符串的子目录
- 根据版本字符串(也是目录名称)对目录进行排序,这可能涉及将字符串解析为主要、次要和补丁。
- 将解析后的版本字符串与 version_spec 进行比较以获取请求的版本
- 设置输出变量
任何人都可以帮助解决上述 1、2 或 3 中的任何一个问题吗?谢谢!
解决方案
推荐阅读
- vba - SAP GUI 脚本 VBA,抓取性能助手文本
- php - 从下拉表单中获取输入并将其放入数据库 PHP
- python - Pandas 如何根据条件替换多个值的值
- javascript - 如何解构对象并使用键和值更新 MySQL?
- python - 将变量传入和传出 exec [因不清楚而关闭。已修改并重新上传]
- postgresql - 如何创建一个函数来重新索引前 X 个最差的 postgres 索引
- django - 如何在 django 模型中显式地建立反向foregnkey/1to1/MtoM 连接?
- r - 在 R 线性回归中处理嵌套变量
- python-3.x - Content-Disposition 标头 Azure HTTP 触发函数
- javascript - 年龄验证脚本弹出问题