-
Notifications
You must be signed in to change notification settings - Fork 84
/
Copy pathCMakeLists.txt
161 lines (133 loc) · 4.15 KB
/
CMakeLists.txt
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
cmake_minimum_required(VERSION 3.5)
#-----------------------------------------------------------------------------
project(PythonQtGenerator)
#-----------------------------------------------------------------------------
include(CTestUseLaunchers OPTIONAL)
#-----------------------------------------------------------------------------
# Setup Qt
if(NOT DEFINED PythonQtGenerator_QT_VERSION)
if(DEFINED Qt5_DIR)
set(PythonQtGenerator_QT_VERSION 5)
else()
set(PythonQtGenerator_QT_VERSION 6)
endif()
endif()
set(minimum_required_qt5_version "5.15.0")
set(minimum_required_qt6_version "6.5.3")
set(minimum_required_qt_version ${minimum_required_qt${PythonQtGenerator_QT_VERSION}_version})
set(qt_required_components Core Xml)
if(PythonQtGenerator_QT_VERSION VERSION_EQUAL 6)
list(APPEND qt_required_components Core5Compat)
endif()
message(STATUS "${PROJECT_NAME}: Required Qt${PythonQtGenerator_QT_VERSION} components [${qt_required_components}]")
find_package(Qt${PythonQtGenerator_QT_VERSION} ${minimum_required_qt_version}
COMPONENTS ${qt_required_components} REQUIRED)
#-----------------------------------------------------------------------------
# Sources
set(sources
parser/ast.cpp
parser/binder.cpp
parser/class_compiler.cpp
parser/codemodel.cpp
parser/codemodel_finder.cpp
parser/compiler_utils.cpp
parser/control.cpp
parser/declarator_compiler.cpp
parser/default_visitor.cpp
parser/dumptree.cpp
parser/lexer.cpp
parser/list.cpp
parser/name_compiler.cpp
parser/parser.cpp
parser/smallobject.cpp
parser/tokens.cpp
parser/type_compiler.cpp
parser/visitor.cpp
abstractmetabuilder.cpp
abstractmetalang.cpp
asttoxml.cpp
customtypes.cpp
fileout.cpp
generator.cpp
generatorset.cpp
generatorsetqtscript.cpp
main.cpp
metajava.cpp
metaqtscriptbuilder.cpp
metaqtscript.cpp
prigenerator.cpp
reporthandler.cpp
setupgenerator.cpp
shellgenerator.cpp
shellheadergenerator.cpp
shellimplgenerator.cpp
typeparser.cpp
typesystem.cpp
)
#-----------------------------------------------------------------------------
# List headers. This list is used for the install command.
set(headers
)
#-----------------------------------------------------------------------------
# Headers that should run through moc
set(moc_sources
fileout.h
generator.h
generatorset.h
generatorsetqtscript.h
prigenerator.h
setupgenerator.h
shellgenerator.h
shellheadergenerator.h
shellimplgenerator.h
)
#-----------------------------------------------------------------------------
# Resources
set(qrc_sources
generator.qrc
)
#-----------------------------------------------------------------------------
# Do wrapping
qt_wrap_cpp(gen_moc_sources ${moc_sources})
qt_add_resources(gen_qrc_sources ${qrc_sources})
#-----------------------------------------------------------------------------
# Copy file expected by the generator and specify install rules
file(GLOB files_to_copy RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "build_*.txt" "typesystem_*.xml")
list(APPEND files_to_copy qtscript_masterinclude.h parser/rpp/pp-qt-configuration)
foreach(file ${files_to_copy})
configure_file(
${file}
${CMAKE_CURRENT_BINARY_DIR}/${file}
COPYONLY
)
get_filename_component(destination_dir ${file} PATH)
install(FILES ${file} DESTINATION bin/${destination_dir})
endforeach()
#-----------------------------------------------------------------------------
# Build the library
SOURCE_GROUP("Resources" FILES
${qrc_sources}
${files_to_copy}
)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/parser
${CMAKE_CURRENT_SOURCE_DIR}/parser/rpp
)
add_definitions(-DRXX_ALLOCATOR_INIT_0)
add_executable(${PROJECT_NAME}
${sources}
${gen_moc_sources}
${gen_qrc_sources}
)
target_link_libraries(${PROJECT_NAME}
Qt::Core
Qt::Xml
$<$<VERSION_EQUAL:${PythonQtGenerator_QT_VERSION},6>:Qt6::Core5Compat>
)
#-----------------------------------------------------------------------------
# Install library (on windows, put the dll in 'bin' and the archive in 'lib')
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)