在CMake中对版本字符串进行排序

时间:2019-01-01 04:16:46

标签: cmake qmake

我将一个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

到目前为止,我会想像一下此功能应该做的事

  1. 全局查找Qt5_ROOT中所有类似于版本字符串的子目录
  2. 根据版本字符串(也包括目录名称)对目录进行排序,这可能涉及将字符串解析为major,minor和patch。
  3. 将已解析的版本字符串与version_spec进行比较,以获取请求的版本
  4. 设置输出变量

任何人都可以为以上1、2或3中的任何一个提供帮助吗?谢谢!

0 个答案:

没有答案