Я конвертирую проект 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
- , сортировать каталоги по строкам версии (также имена dir), это, вероятно, включает анализ строки на major, minor и patch.
- сравните проанализированные строки версии с version_spec, чтобы получить запрошенную версию
- установить выходную переменную
Может ли кто-нибудь помочь с любым из указанных выше пунктов 1, 2 или 3?Спасибо!