1
- cmake_minimum_required (VERSION 3.5)
2
-
3
- project (AmurCore VERSION 0.1 LANGUAGES CXX)
4
-
5
- set (CMAKE_INCLUDE_CURRENT_DIR ON )
1
+ cmake_minimum_required (VERSION 3.16)
2
+ include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/GetVersionFromGit.cmake" )
3
+ project (AmurCore VERSION ${PROJECT_VERSION_SEMVER} LANGUAGES CXX)
6
4
7
5
set (CMAKE_AUTOUIC ON )
8
6
set (CMAKE_AUTOMOC ON )
@@ -11,8 +9,6 @@ set(CMAKE_AUTORCC ON)
11
9
set (CMAKE_CXX_STANDARD 17)
12
10
set (CMAKE_CXX_STANDARD_REQUIRED ON )
13
11
14
- get_directory_property (IS_SUBPROJECT PARENT_DIRECTORY )
15
-
16
12
#option(AMURCLIENT_TESTING "Включить модульное тестирование" ON)
17
13
#option(AMURCLIENT_COVERAGE "Включить измерение покрытия кода тестами" OFF)
18
14
@@ -37,43 +33,39 @@ if(NOT IS_SUBPROJECT)
37
33
endif ()
38
34
endif ()
39
35
40
- add_compile_options (
41
- # -Werror
42
-
43
- -Wall
44
- -Wextra
45
- -Wpedantic
46
-
47
- -Wcast-align
48
- -Wcast-qual
49
- # -Wconversion
50
- -Wsign-conversion
51
- # -Wsign-promo
52
- -Wdisabled-optimization
53
- -Wctor-dtor-privacy
54
- -Wformat=2
55
- -Winit-self
56
- -Wlogical-op
57
- -Wmissing-declarations
58
- -Wmissing-include -dirs
59
- -Wnoexcept
60
- # -Wshadow
61
- -Wenum-compare
62
- -Wfloat-equal
63
- -Wnon-virtual-dtor
64
- -Wold-style-cast
65
- -Woverloaded-virtual
66
- -Wredundant-decls
67
- -Wstrict-null-sentinel
68
- -Wstrict-overflow=5
69
- -Wswitch-default
70
- -Wundef
71
- -Wno-unused
72
- )
73
-
74
- if (NOT CMAKE_CXX_EXTENSIONS)
75
- set (CMAKE_CXX_EXTENSIONS OFF )
76
- endif ()
36
+ # add_compile_options(
37
+ # # -Werror
38
+
39
+ # -Wall
40
+ # -Wextra
41
+ # -Wpedantic
42
+
43
+ # -Wcast-align
44
+ # -Wcast-qual
45
+ # # -Wconversion
46
+ # -Wsign-conversion
47
+ # # -Wsign-promo
48
+ # -Wdisabled-optimization
49
+ # -Wctor-dtor-privacy
50
+ # -Wformat=2
51
+ # -Winit-self
52
+ # -Wlogical-op
53
+ # -Wmissing-declarations
54
+ # -Wmissing-include-dirs
55
+ # -Wnoexcept
56
+ # # -Wshadow
57
+ # -Wenum-compare
58
+ # -Wfloat-equal
59
+ # -Wnon-virtual-dtor
60
+ # -Wold-style-cast
61
+ # -Woverloaded-virtual
62
+ # -Wredundant-decls
63
+ # -Wstrict-null-sentinel
64
+ # -Wstrict-overflow=5
65
+ # -Wswitch-default
66
+ # -Wundef
67
+ # -Wno-unused
68
+ # )
77
69
78
70
find_library (libСonfig_LIB config++)
79
71
@@ -83,13 +75,22 @@ configure_file(
83
75
AmurCore.cfg
84
76
)
85
77
78
+ set (GRPC_FETCHCONTENT true CACHE BOOL "Use FetchContent for download gRPC, or use system gRPC? yes/NO." )
79
+ include (cmake/grpc.cmake)
80
+ include_directories ("${CMAKE_CURRENT_BINARY_DIR} /_deps/grpc-src/include/" )
81
+ include_directories ("${CMAKE_CURRENT_BINARY_DIR} /_deps/grpc-src/third_party/protobuf/src/" )
82
+ include_directories ("${CMAKE_CURRENT_BINARY_DIR} /_deps/grpc-src/third_party/abseil-cpp/" )
83
+
84
+ # for generated pb files
85
+ include_directories ("${CMAKE_CURRENT_BINARY_DIR} " )
86
+
86
87
find_package (QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools TextToSpeech)
87
88
find_package (Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools TextToSpeech)
88
89
89
90
find_package (SDL2 REQUIRED)
90
91
include_directories (${SDL2_INCLUDE_DIRS} )
91
92
92
- find_package ( OpenCV REQUIRED )
93
+ find_package (OpenCV REQUIRED)
93
94
include_directories ( ${OpenCV_INCLUDE_DIRS} )
94
95
95
96
set (TS_FILES AmurCore_ru_RU.ts)
@@ -98,6 +99,7 @@ set(IMAGES
98
99
data/images/no_picture.jpeg
99
100
)
100
101
102
+
101
103
add_subdirectory (camera)
102
104
add_subdirectory (network)
103
105
add_subdirectory (joystick)
@@ -115,33 +117,36 @@ set(PROJECT_SOURCES
115
117
)
116
118
117
119
if (${QT_VERSION_MAJOR} GREATER_EQUAL 6)
118
- qt_add_executable(AmurCore
120
+ qt_add_executable(${PROJECT_NAME}
119
121
MANUAL_FINALIZATION
120
122
${PROJECT_SOURCES}
121
123
)
122
124
# Define target properties for Android with Qt 6 as:
123
- # set_property(TARGET AmurCore APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
125
+ # set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
124
126
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
125
127
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
126
128
127
129
qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES} )
128
130
else ()
129
131
if (ANDROID)
130
- add_library (AmurCore SHARED
132
+ add_library (${PROJECT_NAME} SHARED
131
133
${PROJECT_SOURCES}
132
134
)
133
135
# Define properties for Android with Qt 5 after find_package() calls as:
134
136
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
135
137
else ()
136
- add_executable (AmurCore
138
+ add_executable (${PROJECT_NAME}
137
139
${PROJECT_SOURCES}
138
140
)
139
141
endif ()
140
142
141
143
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES} )
142
144
endif ()
143
145
144
- target_link_libraries (AmurCore PRIVATE
146
+ file (COPY "${CMAKE_SOURCE_DIR} /data"
147
+ DESTINATION "${CMAKE_BINARY_DIR} " )
148
+
149
+ target_link_libraries (${PROJECT_NAME} PRIVATE
145
150
LogicCore
146
151
CameraSetup
147
152
ThreadsHandler
@@ -156,7 +161,7 @@ target_link_libraries(AmurCore PRIVATE
156
161
Qt${QT_VERSION_MAJOR} ::Widgets
157
162
)
158
163
159
- set_target_properties (AmurCore PROPERTIES
164
+ set_target_properties (${PROJECT_NAME} PROPERTIES
160
165
MACOSX_BUNDLE_GUI_IDENTIFIER AmurClient.online
161
166
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
162
167
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR} .${PROJECT_VERSION_MINOR}
@@ -165,5 +170,34 @@ set_target_properties(AmurCore PROPERTIES
165
170
)
166
171
167
172
if (QT_VERSION_MAJOR EQUAL 6)
168
- qt_finalize_executable(AmurCore)
173
+ qt_finalize_executable(${PROJECT_NAME} )
174
+ endif ()
175
+
176
+ if (CMAKE_BUILD_TYPE STREQUAL Release)
177
+ if (NOT DEFINED CMAKE_SYSTEM_PROCESSOR )
178
+ set (CMAKE_SYSTEM_PROCESSOR ${CMAKE_HOST_SYSTEM_PROCESSOR} CACHE INTERNAL "" )
179
+ endif ()
180
+ if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR} )
181
+ set (IS_CROSSCOMP OFF CACHE INTERNAL "" )
182
+ else ()
183
+ set (IS_CROSSCOMP ON CACHE INTERNAL "" )
184
+ endif ()
185
+
186
+ set (DATA_PATH ${CMAKE_SOURCE_DIR} /data)
187
+ set (LOGO_PATH ${DATA_PATH} /images/logo.png)
188
+ INSTALL (CODE
189
+ "include(${CMAKE_CURRENT_SOURCE_DIR} /cmake/appimage.cmake)
190
+ make_appimage(
191
+ EXE \" ${CMAKE_BINARY_DIR} /${PROJECT_NAME} \"
192
+ NAME \" ${PROJECT_NAME} \"
193
+ ICON \" ${LOGO_PATH} \"
194
+ DIR_ICON \" ${LOGO_PATH} \"
195
+ OUTPUT_NAME \" ${CMAKE_BINARY_DIR} /${PROJECT_NAME} -${PROJECT_VERSION} .AppImage\"
196
+ OUTPUT_ARCH \" ${CMAKE_SYSTEM_PROCESSOR} \"
197
+ CROSSCOMP ${IS_CROSSCOMP}
198
+ ASSETS \" ${DATA_PATH} \"
199
+ )
200
+ "
201
+ COMPONENT Runtime
202
+ )
169
203
endif ()
0 commit comments