forked from MeVisLab/pythonqt
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
87 lines (74 loc) · 3.14 KB
/
CMakeLists.txt
File metadata and controls
87 lines (74 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
cmake_minimum_required(VERSION 3.27)
project(PythonQt LANGUAGES CXX VERSION 3.5.6)
#-----------------------------------------------------------------------------
# Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to 'Release' as none was specified.")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
mark_as_advanced(CMAKE_BUILD_TYPE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo")
endif()
#-----------------------------------------------------------------------------
enable_testing()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Force errors for dangerous operations
add_compile_definitions( -DQT_NO_CAST_TO_ASCII )
option(PythonQt_NO_IMPLICIT_CASTING "Disable implicit casts related to dangerous implicit conversions" OFF)
if(PythonQt_NO_IMPLICIT_CASTING) # Definitions to force
# errors on dangerous implicit operations
# to be addressed at a later time
add_compile_definitions( -DQT_NO_CAST_FROM_ASCII
-DQT_NO_CAST_FROM_ASCII
-DQT_NO_CAST_TO_BYTEARRAY
-DQT_NO_CAST_FROM_BYTEARRAY
-DQT_NO_CAST_TO_QSTRING
-DQT_NO_CAST_FROM_QSTRING
-DQT_NO_CAST_TO_QSTRINGREF
-DQT_NO_CAST_FROM_QSTRINGREF
-DQT_NO_CAST_TO_QVARIANT
-DQT_NO_CAST_FROM_QVARIANT )
endif()
option(FORCE_BUILD_QT5 "Force Qt5 build instead of Qt6" OFF)
if(FORCE_BUILD_QT5)
find_package(Qt5 NAMES Qt5 REQUIRED COMPONENTS Core Widgets Xml)
string(REPLACE "." ";" qt_version_list ${Qt5_VERSION})
else()
find_package(Qt6 NAMES Qt6 REQUIRED COMPONENTS Core Widgets Xml Core5Compat)
string(REPLACE "." ";" qt_version_list ${Qt6_VERSION})
endif()
list(GET qt_version_list 0 QT_VERSION_MAJOR)
list(GET qt_version_list 1 QT_VERSION_MINOR)
list(GET qt_version_list 1 QT_VERSION_PATCH)
message(STATUS "QT_VERSION_MAJOR = ${QT_VERSION_MAJOR}")
find_package(Python3 COMPONENTS Development REQUIRED)
# Set the environment as defined in Readme.md
# Set environment variables for Python
if(Python3_FOUND)
set(PYTHON_VERSION "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
set(PYTHON_PATH "${Python3_PREFIX}")
set(PYTHON_LIB "${Python3_PREFIX}/libs")
set(PYTHON_DIR "${Python3_PREFIX}")
set(ENV{PYTHON_VERSION} "${PYTHON_VERSION}")
set(ENV{PYTHON_PATH} "${PYTHON_PATH}")
set(ENV{PYTHON_LIB} "${PYTHON_LIB}")
set(ENV{PYTHON_DIR} "${PYTHON_DIR}")
endif()
# Set QTDIR environment variable to Qt installation root
if(FORCE_BUILD_QT5)
if(DEFINED Qt5_DIR)
set(ENV{QTDIR} "${Qt5_DIR}")
endif()
else()
if(DEFINED Qt6_DIR)
set(ENV{QTDIR} "${Qt6_DIR}")
endif()
endif()
set(PYTHONQT_SUFFIX Qt${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}-Python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR})
include_directories(src)
add_subdirectory(generator)
add_subdirectory(src)
add_subdirectory(extensions)
add_subdirectory(tests)
# add_subdirectory(examples)