使用CMake测试Qt版本

jrcvhitl  于 2023-10-20  发布在  其他
关注(0)|答案(4)|浏览(194)

我正在使用CMake构建一个Qt项目,它使用了一些较新的Qt特性,并且需要至少5.3版本才能正确构建。我想对那些试图构建项目并在CMake配置时失败的人很好,因为逻辑错误告诉他们他们的CMake版本不够新,而不是一些深奥的构建错误。
我知道我将通过简单地使用模块find_package语法(即,find_package(Qt5Widgets REQURIED)),但如何确保我使用正确的次要版本并不那么明显。最简单的方法是什么?

rggaifut

rggaifut1#

我知道这是一个有点旧的帖子,但你可以使用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)
qjp7pelc

qjp7pelc2#

现在可以将一个版本传递给find_package,如下所示:

find_package(Qt5Core 5.10 REQUIRED)

如果找不到兼容的Qt5Core版本,find_package调用将失败:

CMake Warning at CMakeLists.txt:15 (find_package):
Could not find a configuration file for package "Qt5Core" that is
compatible with requested version "5.10".

The following configuration files were considered but not accepted:

C:/some/where/lib/cmake/Qt5Core/Qt5CoreConfig.cmake, version: 5.9.4

这在https://cmake.org/cmake/help/latest/command/find_package.html#version-selection上有详细的文档

taor4pac

taor4pac3#

对于Qt提供的cmake包,没有直接的方法可以做到这一点,但是使用qmake查询Qt版本是很容易的。假设您在cmake文件中已经有类似于下面的内容来定位Qt安装

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()
bxjv4tth

bxjv4tth4#

一个简单的方法:

find_package(Qt6 REQUIRED COMPONENTS Widgets)
message("${Qt6_VERSION}")

相关问题