@@ -28,6 +28,9 @@ project(Natron
28
28
29
29
set (CMAKE_CXX_STANDARD 17 )
30
30
31
+ include (GNUInstallDirs )
32
+
33
+ option (NATRON_QT6 "use Qt6" OFF )
31
34
option (NATRON_SYSTEM_LIBS "use system versions of dependencies instead of bundled ones" OFF )
32
35
option (NATRON_BUILD_TESTS "build the Natron test suite" ON )
33
36
@@ -55,28 +58,53 @@ if(WIN32)
55
58
set (Python3_FIND_REGISTRY NEVER )
56
59
endif ()
57
60
find_package (Python3 COMPONENTS Interpreter Development )
58
- find_package (Qt5 5.15 CONFIG REQUIRED COMPONENTS Core Gui Network Widgets Concurrent )
59
61
60
62
if (IS_DEBUG_BUILD AND WIN32 )
61
63
# Explicitly setting SHIBOKEN_PYTHON_LIBRARIES variable to avoid PYTHON_DEBUG_LIBRARY-NOTFOUND
62
64
# link errors on Windows debug builds.
63
65
set (SHIBOKEN_PYTHON_LIBRARIES ${Python3_LIBRARIES} )
64
66
endif ()
65
- find_package (Shiboken2 5.15 CONFIG REQUIRED COMPONENTS libshiboken2 shiboken2 )
66
67
67
- if (IS_DEBUG_BUILD AND WIN32 )
68
- # Remove NDEBUG from Shiboken2 INTERFACE_COMPILE_DEFINITIONS so it is not inherited in debug builds.
69
- get_property (ShibokenInterfaceDefs TARGET Shiboken2::libshiboken PROPERTY INTERFACE_COMPILE_DEFINITIONS )
70
- list (REMOVE_ITEM ShibokenInterfaceDefs NDEBUG )
71
- set_property (TARGET Shiboken2::libshiboken PROPERTY INTERFACE_COMPILE_DEFINITIONS ShibokenInterfaceDefs )
68
+ set (QT_COMPONENTS Core Gui Network Widgets Concurrent )
69
+ if (NATRON_QT6 )
70
+ list (APPEND QT_COMPONENTS OpenGLWidgets )
71
+ find_package (Qt6 6.3 CONFIG REQUIRED COMPONENTS ${QT_COMPONENTS} )
72
+ find_package (Shiboken6 6.3 CONFIG REQUIRED COMPONENTS libshiboken6 )
73
+ find_package (Shiboken6Tools 6.3 CONFIG REQUIRED COMPONENTS shiboken6 )
74
+ find_package (PySide6 6.3 CONFIG REQUIRED COMPONENTS pyside6 )
75
+ set (QT_VERSION_MAJOR 6 )
76
+
77
+ get_target_property (PYSIDE_INCLUDE_DIRS PySide6::pyside6 INTERFACE_INCLUDE_DIRECTORIES )
78
+ set (QTCORE_INCLUDE_DIRS ${Qt6Core_INCLUDE_DIRS} )
79
+ set (QTGUI_INCLUDE_DIRS ${Qt6Gui_INCLUDE_DIRS} )
80
+ set (QTWIDGETS_INCLUDE_DIRS ${Qt6Widgets_INCLUDE_DIRS} )
81
+
82
+ set (SHIBOKEN_EXE Shiboken6::shiboken6 )
83
+ set (SHIBOKEN_LIB Shiboken6::libshiboken )
84
+ set (PYSIDE_LIB PySide6::pyside6 )
85
+ else ()
86
+ find_package (Qt5 5.15 CONFIG REQUIRED COMPONENTS ${QT_COMPONENTS} )
87
+ find_package (Shiboken2 5.15 CONFIG REQUIRED COMPONENTS libshiboken2 shiboken2 )
88
+
89
+ find_package (PySide2 5.15 CONFIG REQUIRED COMPONENTS pyside2 )
90
+ set (QT_VERSION_MAJOR 5 )
91
+
92
+ get_target_property (PYSIDE_INCLUDE_DIRS PySide2::pyside2 INTERFACE_INCLUDE_DIRECTORIES )
93
+ set (QTCORE_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} )
94
+ set (QTGUI_INCLUDE_DIRS ${Qt5Gui_INCLUDE_DIRS} )
95
+ set (QTWIDGETS_INCLUDE_DIRS ${Qt5Widgets_INCLUDE_DIRS} )
96
+
97
+ set (SHIBOKEN_EXE Shiboken2::shiboken2 )
98
+ set (SHIBOKEN_LIB Shiboken2::libshiboken )
99
+ set (PYSIDE_LIB PySide2::pyside2 )
72
100
endif ()
73
101
74
- find_package ( PySide2 5.15 CONFIG REQUIRED COMPONENTS pyside2 )
75
- set ( QT_VERSION_MAJOR 5 )
76
- get_target_property ( PYSIDE_INCLUDE_DIRS PySide2::pyside2 INTERFACE_INCLUDE_DIRECTORIES )
77
- set ( QTCORE_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} )
78
- set ( QTGUI_INCLUDE_DIRS ${Qt5Gui_INCLUDE_DIRS} )
79
- set ( QTWIDGETS_INCLUDE_DIRS ${Qt5Widgets_INCLUDE_DIRS} )
102
+ if ( IS_DEBUG_BUILD AND WIN32 )
103
+ # Remove NDEBUG from Shiboken INTERFACE_COMPILE_DEFINITIONS so it is not inherited in debug builds.
104
+ get_property ( SHIBOKEN_DEFS TARGET ${SHIBOKEN_LIB} PROPERTY INTERFACE_COMPILE_DEFINITIONS )
105
+ list ( REMOVE_ITEM SHIBOKEN_DEFS NDEBUG )
106
+ set_property ( TARGET ${SHIBOKEN_LIB} PROPERTY INTERFACE_COMPILE_DEFINITIONS SHIBOKEN_DEFS )
107
+ endif ( )
80
108
81
109
#Since in Natron and OpenFX all strings are supposed UTF-8 and that the constructor
82
110
#for QString(const char*) assumes ASCII strings, we may run into troubles
@@ -119,8 +147,6 @@ elseif(WIN32)
119
147
endif ()
120
148
endif ()
121
149
122
- include (GNUInstallDirs )
123
-
124
150
set (CMAKE_AUTOMOC ON )
125
151
set (CMAKE_AUTORCC ON )
126
152
0 commit comments