Skip to content

Commit c7188a0

Browse files
committed
fix: (cmake) Correctly set QT_VERSION_MAJOR and find Qt6 private modules
The previous CMake logic used `find_package(QT NAMES Qt6 ...)` followed by `if(Qt6_VERSION VERSION_GREATER_EQUAL 6.10)` to conditionally find private modules, but `Qt6_VERSION` is not set by this call. As a result, Qt6 private modules (CorePrivate, GuiPrivate, WidgetsPrivate) were never found, causing link errors on targets depending on them. This patch updates the logic to: - Set `QT_VERSION_MAJOR` and `QT_VERSION_MINOR` based on the public Qt6/Qt5 version variables, preserving existing version checks in the project. - Conditionally find Qt6 private modules using `find_package(Qt6 CONFIG REQUIRED COMPONENTS CorePrivate GuiPrivate WidgetsPrivate)` when Qt6 >= 6.10. - Maintain compatibility with Qt5 builds. This ensures private modules are correctly linked when available and prevents undefined reference errors.
1 parent ddb765d commit c7188a0

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

CMakeLists.txt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,20 @@ option(ENABLE_COV "Enable code coverage" OFF)
2121
if(PROJECT_VERSION_MAJOR EQUAL 6)
2222
set(VERSION_SUFFIX 6)
2323
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core)
24-
if(Qt6_VERSION VERSION_GREATER_EQUAL 6.10)
25-
find_package(Qt6 COMPONENTS CorePrivate GuiPrivate WidgetsPrivate REQUIRED)
24+
if(NOT DEFINED QT_VERSION_MAJOR)
25+
set(QT_VERSION_MAJOR ${Qt6_VERSION_MAJOR})
26+
set(QT_VERSION_MINOR ${Qt6_VERSION_MINOR})
27+
endif()
28+
if(QT_VERSION_MAJOR GREATER 6 OR (QT_VERSION_MAJOR EQUAL 6 AND QT_VERSION_MINOR GREATER_EQUAL 10))
29+
find_package(Qt6 CONFIG REQUIRED COMPONENTS CorePrivate GuiPrivate WidgetsPrivate)
2630
endif()
2731
else()
2832
set(VERSION_SUFFIX)
2933
find_package(QT NAMES Qt5 REQUIRED COMPONENTS Core)
34+
if(NOT DEFINED QT_VERSION_MAJOR)
35+
set(QT_VERSION_MAJOR ${Qt5_VERSION_MAJOR})
36+
set(QT_VERSION_MINOR ${Qt5_VERSION_MINOR})
37+
endif()
3038
endif()
3139

3240
set(CMAKE_CXX_STANDARD 17)

0 commit comments

Comments
 (0)