1- cmake_minimum_required (VERSION 2.8 )
1+ cmake_minimum_required (VERSION 3.20.6 )
22
3- #-----------------------------------------------------------------------------
4- project (PythonQtGenerator)
5- #-----------------------------------------------------------------------------
3+ project (PythonQtGenerator LANGUAGES CXX)
64
7- include (CTestUseLaunchers OPTIONAL )
8-
9- #-----------------------------------------------------------------------------
5+ #----------------------------------------------------------------------------
106# Setup Qt
117
12- set (minimum_required_qt_version "4.6.2" )
8+ # Set PythonQtGenerator_QT_VERSION
9+ set (PythonQtGenerator_QT_VERSION 5)
1310
14- find_package (Qt4)
11+ set (minimum_required_qt5_version "5.15.0" )
12+ set (minimum_required_qt_version ${minimum_required_qt${PythonQtGenerator_QT_VERSION} _version})
1513
16- if (QT4_FOUND )
14+ set (qt_required_components Core Xml )
1715
18- set (found_qt_version ${QT_VERSION_MAJOR} . ${QT_VERSION_MINOR} . ${QT_VERSION_PATCH} )
16+ message ( STATUS " ${PROJECT_NAME} : Required Qt ${PythonQtGenerator_QT_VERSION} components [ ${qt_required_components} ]" )
1917
20- if (${found_qt_version} VERSION_LESS ${minimum_required_qt_version} )
21- message (FATAL_ERROR "error: PythonQt requires Qt >= ${minimum_required_qt_version} -- you cannot use Qt ${found_qt_version} ." )
22- endif ()
23-
24- set (QT_USE_QTXML ON )
25-
26- include (${QT_USE_FILE} )
27- else ()
28- message (FATAL_ERROR "error: Qt4 was not found on your system. You probably need to set the QT_QMAKE_EXECUTABLE variable" )
29- endif ()
18+ # Requirements
19+ find_package (Qt${PythonQtGenerator_QT_VERSION} ${minimum_required_qt_version}
20+ COMPONENTS ${qt_required_components} REQUIRED)
3021
3122#-----------------------------------------------------------------------------
3223# Sources
3324
3425set (sources
26+ # Based of parser/rxx.pro
3527 parser/ast.cpp
3628 parser/binder.cpp
3729 parser/class_compiler.cpp
@@ -50,108 +42,62 @@ set(sources
5042 parser/tokens.cpp
5143 parser/type_compiler.cpp
5244 parser/visitor.cpp
53-
45+
46+ # Based of simplecpp/simplecpp.pri
47+ simplecpp/simplecpp.cpp
48+
49+ # Based of generator.pri
5450 abstractmetabuilder.cpp
5551 abstractmetalang.cpp
5652 asttoxml.cpp
5753 customtypes.cpp
5854 fileout.cpp
5955 generator.cpp
56+ generator.qrc
6057 generatorset.cpp
61- generatorsetqtscript.cpp
6258 main.cpp
6359 metajava.cpp
64- metaqtscriptbuilder.cpp
65- metaqtscript.cpp
6660 prigenerator.cpp
6761 reporthandler.cpp
62+ typeparser.cpp
63+ typesystem.cpp
64+
65+ # Based of generator.pro
66+ generatorsetqtscript.cpp
67+ metaqtscriptbuilder.cpp
68+ metaqtscript.cpp
6869 setupgenerator.cpp
6970 shellgenerator.cpp
7071 shellheadergenerator.cpp
7172 shellimplgenerator.cpp
72- typeparser.cpp
73- typesystem.cpp
7473 )
75-
76- #-----------------------------------------------------------------------------
77- # List headers. This list is used for the install command.
7874
79- set (headers
80- )
75+ add_executable (${PROJECT_NAME} ${sources} )
8176
82- #-----------------------------------------------------------------------------
83- # Headers that should run through moc
84-
85- set (moc_sources
86- fileout.h
87- generator.h
88- generatorset.h
89- generatorsetqtscript.h
90- prigenerator.h
91- setupgenerator.h
92- shellgenerator.h
93- shellheadergenerator.h
94- shellimplgenerator.h
77+ set_target_properties (${PROJECT_NAME}
78+ PROPERTIES
79+ AUTOMOC TRUE
80+ AUTORCC TRUE
9581 )
96-
97- #-----------------------------------------------------------------------------
98- # UI files
99-
100- set (ui_sources )
101-
102- #-----------------------------------------------------------------------------
103- # Resources
10482
105- set (qrc_sources
106- generator.qrc
83+ target_include_directories (${PROJECT_NAME}
84+ PUBLIC
85+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} >
86+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /parser>
87+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /simplecpp>
10788 )
10889
109- #-----------------------------------------------------------------------------
110- # Do wrapping
111- qt4_wrap_cpp(gen_moc_sources ${moc_sources} )
112- qt4_wrap_ui(gen_ui_sources ${ui_sources} )
113- qt4_add_resources(gen_qrc_sources ${qrc_sources} )
114-
115- #-----------------------------------------------------------------------------
116- # Copy file expected by the generator and specify install rules
117-
118- file (GLOB files_to_copy RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "build_*.txt" "typesystem_*.xml" )
119- list (APPEND files_to_copy qtscript_masterinclude.h parser/rpp/pp-qt-configuration )
120- foreach (file ${files_to_copy} )
121- configure_file (
122- ${file}
123- ${CMAKE_CURRENT_BINARY_DIR} /${file}
124- COPYONLY
125- )
126- get_filename_component (destination_dir ${file} PATH )
127- install (FILES ${file} DESTINATION bin/${destination_dir} )
128- endforeach ()
129-
130- #-----------------------------------------------------------------------------
131- # Build the library
132-
133- SOURCE_GROUP ("Resources" FILES
134- ${qrc_sources}
135- ${ui_sources}
136- ${files_to_copy}
90+ target_link_libraries (${PROJECT_NAME}
91+ PUBLIC
92+ Qt::Core
93+ Qt::Xml
13794 )
13895
139- include_directories (
140- ${CMAKE_CURRENT_SOURCE_DIR}
141- ${CMAKE_CURRENT_SOURCE_DIR} / parser
142- ${CMAKE_CURRENT_SOURCE_DIR} /parser/rpp
96+ target_compile_definitions ( ${PROJECT_NAME}
97+ PRIVATE
98+ RXX_ALLOCATOR_INIT_0 # Based of parser/rxx.pro
99+ QT_NO_CAST_TO_ASCII # Based of generator.pro
143100 )
144-
145- add_definitions (-DRXX_ALLOCATOR_INIT_0)
146-
147- add_executable (${PROJECT_NAME}
148- ${sources}
149- ${gen_moc_sources}
150- ${gen_ui_sources}
151- ${gen_qrc_sources}
152- )
153-
154- target_link_libraries (${PROJECT_NAME} ${QT_LIBRARIES} )
155101
156102#-----------------------------------------------------------------------------
157103# Install library (on windows, put the dll in 'bin' and the archive in 'lib')
0 commit comments