我正在使用CMake构建一个Qt项目,它使用了一些较新的Qt功能,并且至少需要5.3版才能正确构建。我想对那些尝试构建项目的人感到高兴,并且在CMake配置时失败,并且逻辑错误告诉他们他们的CMake版本不够新,而不是一些深奥的构建错误。
我知道我将通过简单地使用模块find_package
语法(即find_package(Qt5Widgets REQURIED)
)来获得至少5.0版本,但是如何确保我使用正确的方法并不是那么明显次要版本。
最简单的方法是什么?
答案 0 :(得分:6)
我知道这是一篇有点旧帖子,但您可以使用Qt5Widgets_VERSION
检查版本。这是一些示例CMake代码:
find_package(Qt5Widgets REQUIRED)
if (Qt5Widgets_FOUND)
if (Qt5Widgets_VERSION VERSION_LESS 5.7.0)
message(FATAL_ERROR "Minimum supported Qt5 version is 5.70!")
endif()
else()
message(SEND_ERROR "The Qt5Widgets library could not be found!")
endif(Qt5Widgets_FOUND)
答案 1 :(得分:2)
如今,可以将版本传递给optional func applicationWillEnterForeground(_ application: UIApplication)
,如下所示:
find_package
如果找不到兼容的Qt5Core版本,则find_package(Qt5Core 5.10 REQUIRED)
调用将失败:
find_package
这在https://cmake.org/cmake/help/latest/command/find_package.html#version-selection
中有详细记录答案 2 :(得分:0)
使用Qt提供的cmake软件包没有直接的方法,但使用qmake查询Qt版本很容易。假设您已经在cmake文件中找到了类似于以下内容的内容,以找到Qt install
set(QTDIR $ENV{QTDIR} CACHE STRING "Qt install path")
list(APPEND CMAKE_PREFIX_PATH ${QTDIR})
如果版本太低,你可以检查版本并使配置步骤失败
set(QT_MINIMUM_VERSION 5.3.0)
# Test for supported Qt version
find_program(QMAKE_EXECUTABLE NAMES qmake HINTS ${QTDIR} ENV QTDIR PATH_SUFFIXES bin)
execute_process(COMMAND ${QMAKE_EXECUTABLE} -query QT_VERSION OUTPUT_VARIABLE QT_VERSION)
if(QT_VERSION LESS QT_MINIMUM_VERSION)
MESSAGE(FATAL_ERROR "Minimum supported Qt version: ${QT_MINIMUM_VERSION}.
Installed version: ${QT_VERSION}")
endif()