Skip to content

Commit d503032

Browse files
committed
[commontk] cmake: Add Qt6 support for building PythonQt and PythonQtGenerator
- Add configurable Qt major version (5 or 6) with sensible default (Qt6 if Qt6_DIR is defined, otherwise Qt5). - Require Qt >= 5.15.0 or Qt >= 6.9.0. - Switch component discovery and linking to `Qt${MAJOR}::...` targets. - Define QT_VERSION_MAJOR/MINOR from the found package. - Make pre-generated wrappers default only for Qt5 (generated_cpp_515); for Qt6, default to unset (wrappers must be generated).
1 parent 6f43ed4 commit d503032

File tree

2 files changed

+36
-11
lines changed

2 files changed

+36
-11
lines changed

CMakeLists.txt

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,24 @@ project(PythonQt)
66
#----------------------------------------------------------------------------
77
# Qt version
88

9+
set(_default_qt_major_version 5)
10+
if(DEFINED Qt6_DIR)
11+
set(_default_qt_major_version 6)
12+
endif()
13+
914
# Set PythonQt_QT_VERSION
10-
set(PythonQt_QT_VERSION 5)
15+
set(PythonQt_QT_VERSION ${_default_qt_major_version} CACHE STRING "Qt major version (5 or 6)")
16+
set_property(CACHE PythonQt_QT_VERSION PROPERTY STRINGS "5" "6")
17+
if(NOT "${PythonQt_QT_VERSION}" MATCHES "^(5|6)$")
18+
message(FATAL_ERROR "error: PythonQt_QT_VERSION must be 5 or 6.")
19+
endif()
1120

1221
# Requirements
1322
set(minimum_required_qt5_version "5.15.0")
23+
set(minimum_required_qt6_version "6.9.0")
1424
set(minimum_required_qt_version ${minimum_required_qt${PythonQt_QT_VERSION}_version})
1525

16-
find_package(Qt5 ${minimum_required_qt_version} QUIET)
17-
set(QT_VERSION_MAJOR ${Qt5_VERSION_MAJOR})
18-
set(QT_VERSION_MINOR ${Qt5_VERSION_MINOR})
26+
find_package(Qt${PythonQt_QT_VERSION} ${minimum_required_qt_version} QUIET)
1927

2028
#----------------------------------------------------------------------------
2129
# Qt components
@@ -120,11 +128,14 @@ endif()
120128
list(REMOVE_DUPLICATES qt_required_components)
121129

122130
message(STATUS "${PROJECT_NAME}: Required Qt components [${qt_required_components}]")
123-
find_package(Qt5 ${minimum_required_qt_version} COMPONENTS ${qt_required_components} REQUIRED)
131+
find_package(Qt${PythonQt_QT_VERSION} ${minimum_required_qt_version} COMPONENTS ${qt_required_components} REQUIRED)
132+
133+
set(QT_VERSION_MAJOR ${Qt${PythonQt_QT_VERSION}_VERSION_MAJOR})
134+
set(QT_VERSION_MINOR ${Qt${PythonQt_QT_VERSION}_VERSION_MINOR})
124135

125136
set(QT_LIBRARIES )
126137
foreach(qt_component ${qt_required_components})
127-
list(APPEND QT_LIBRARIES Qt5::${qt_component})
138+
list(APPEND QT_LIBRARIES Qt${PythonQt_QT_VERSION}::${qt_component})
128139
endforeach()
129140

130141
if(UNIX)
@@ -136,8 +147,12 @@ endif()
136147

137148
#-----------------------------------------------------------------------------
138149
# Pre-generated wrappers default to Qt 5.15 set (generated_cpp_515). Users may override.
139-
set(generated_cpp_suffix "_515")
140-
set(_default_generated_path "${CMAKE_CURRENT_SOURCE_DIR}/generated_cpp${generated_cpp_suffix}")
150+
if(PythonQt_QT_VERSION VERSION_EQUAL "5")
151+
set(generated_cpp_suffix "_515")
152+
set(_default_generated_path "${CMAKE_CURRENT_SOURCE_DIR}/generated_cpp${generated_cpp_suffix}")
153+
else()
154+
set(_default_generated_path "PythonQt_GENERATED_PATH-NOTFOUND")
155+
endif()
141156

142157
set(PythonQt_GENERATED_PATH "${_default_generated_path}"
143158
CACHE PATH "Directory containing pre-generated PythonQt Qt wrappers for Qt ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR} (e.g., generated_cpp_515)")

generator/CMakeLists.txt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,20 @@ project(PythonQtGenerator LANGUAGES CXX)
55
#----------------------------------------------------------------------------
66
# Setup Qt
77

8+
set(_default_qt_major_version 5)
9+
if(DEFINED Qt6_DIR)
10+
set(_default_qt_major_version 6)
11+
endif()
12+
813
# Set PythonQtGenerator_QT_VERSION
9-
set(PythonQtGenerator_QT_VERSION 5)
14+
set(PythonQtGenerator_QT_VERSION ${_default_qt_major_version} CACHE STRING "Qt major version (5 or 6)")
15+
set_property(CACHE PythonQtGenerator_QT_VERSION PROPERTY STRINGS "5" "6")
16+
if(NOT "${PythonQtGenerator_QT_VERSION}" MATCHES "^(5|6)$")
17+
message(FATAL_ERROR "error: PythonQtGenerator_QT_VERSION must be 5 or 6.")
18+
endif()
1019

1120
set(minimum_required_qt5_version "5.15.0")
21+
set(minimum_required_qt6_version "6.9.0")
1222
set(minimum_required_qt_version ${minimum_required_qt${PythonQtGenerator_QT_VERSION}_version})
1323

1424
set(qt_required_components Core Xml)
@@ -89,8 +99,8 @@ target_include_directories(${PROJECT_NAME}
8999

90100
target_link_libraries(${PROJECT_NAME}
91101
PUBLIC
92-
Qt::Core
93-
Qt::Xml
102+
Qt${PythonQtGenerator_QT_VERSION}::Core
103+
Qt${PythonQtGenerator_QT_VERSION}::Xml
94104
)
95105

96106
target_compile_definitions(${PROJECT_NAME}

0 commit comments

Comments
 (0)