@@ -29,7 +29,7 @@ endif()
29
29
message (STATUS "[${PROJECT_NAME} ] CPU_ARCH:${QC_CPU_ARCH} " )
30
30
31
31
# CMake set
32
- # set(CMAKE_INCLUDE_CURRENT_DIR ON)
32
+ set (CMAKE_INCLUDE_CURRENT_DIR ON )
33
33
set (CMAKE_CXX_STANDARD 11)
34
34
set (CMAKE_CXX_STANDARD_REQUIRED ON )
35
35
@@ -68,7 +68,7 @@ if (NOT MSVC)
68
68
add_compile_options (-Wall -Wextra -pedantic -Werror)
69
69
70
70
# disable some warning
71
- add_compile_options (-Wno-nested-anon-types -Wno-c++17-extensions)
71
+ add_compile_options (-Wno-nested-anon-types -Wno-c++17-extensions -Wno-overloaded-virtual )
72
72
endif ()
73
73
74
74
#
@@ -79,8 +79,8 @@ set(CMAKE_AUTOUIC ON)
79
79
set (CMAKE_AUTOMOC ON )
80
80
set (CMAKE_AUTORCC ON )
81
81
82
- find_package (QT NAMES Qt6 Qt5 COMPONENTS Widgets Network LinguistTools REQUIRED)
83
- find_package (Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network LinguistTools REQUIRED)
82
+ find_package (QT NAMES Qt6 Qt5 COMPONENTS Widgets Network REQUIRED)
83
+ find_package (Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network REQUIRED)
84
84
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
85
85
find_package (QT NAMES Qt6 Qt5 COMPONENTS X11Extras REQUIRED)
86
86
find_package (Qt${QT_VERSION_MAJOR} COMPONENTS X11Extras REQUIRED)
@@ -92,79 +92,6 @@ message(STATUS "[${PROJECT_NAME}] Qt version is: ${QT_VERSION_MAJOR}.${QT_VERSIO
92
92
# Sources
93
93
#
94
94
95
- # adb
96
- set (QC_ADB_SOURCES
97
- adb/adbprocess.h
98
- adb/adbprocess.cpp
99
- )
100
- source_group (adb FILES ${QC_ADB_SOURCES} )
101
-
102
- # common
103
- set (QC_COMMON_SOURCES
104
- common/qscrcpyevent.h
105
- )
106
- source_group (common FILES ${QC_COMMON_SOURCES} )
107
-
108
- # device
109
- set (QC_DEVICE_SOURCES
110
- device/device.h
111
- device/device.cpp
112
- device/android/input .h
113
- device/android/keycodes.h
114
- device/controller/controller.h
115
- device/controller/controller.cpp
116
- device/controller/inputconvert/inputconvertbase.h
117
- device/controller/inputconvert/inputconvertbase.cpp
118
- device/controller/inputconvert/inputconvertnormal.h
119
- device/controller/inputconvert/inputconvertnormal.cpp
120
- device/controller/inputconvert/inputconvertgame.h
121
- device/controller/inputconvert/inputconvertgame.cpp
122
- device/controller/inputconvert/controlmsg.h
123
- device/controller/inputconvert/controlmsg.cpp
124
- device/controller/inputconvert/keymap/keymap.h
125
- device/controller/inputconvert/keymap/keymap.cpp
126
- device/controller/receiver/devicemsg.h
127
- device/controller/receiver/devicemsg.cpp
128
- device/controller/receiver/receiver.h
129
- device/controller/receiver/receiver.cpp
130
- device/decoder/avframeconvert.h
131
- device/decoder/avframeconvert.cpp
132
- device/decoder/decoder.h
133
- device/decoder/decoder.cpp
134
- device/decoder/fpscounter.h
135
- device/decoder/fpscounter.cpp
136
- device/decoder/videobuffer.h
137
- device/decoder/videobuffer.cpp
138
- device/filehandler/filehandler.h
139
- device/filehandler/filehandler.cpp
140
- device/recorder/recorder.h
141
- device/recorder/recorder.cpp
142
- device/render/qyuvopenglwidget.h
143
- device/render/qyuvopenglwidget.cpp
144
- device/server/server.h
145
- device/server/server.cpp
146
- device/server/tcpserver.h
147
- device/server/tcpserver.cpp
148
- device/server/videosocket.h
149
- device/server/videosocket.cpp
150
- device/stream/stream.h
151
- device/stream/stream.cpp
152
- device/ui/toolform.h
153
- device/ui/toolform.cpp
154
- device/ui/toolform.ui
155
- device/ui/videoform.h
156
- device/ui/videoform.cpp
157
- device/ui/videoform.ui
158
- )
159
- source_group (device FILES ${QC_DEVICE_SOURCES} )
160
-
161
- # devicemanage
162
- set (QC_DEVICEMANAGE_SOURCES
163
- devicemanage/devicemanage.h
164
- devicemanage/devicemanage.cpp
165
- )
166
- source_group (devicemanage FILES ${QC_DEVICEMANAGE_SOURCES} )
167
-
168
95
# fontawesome
169
96
set (QC_FONTAWESOME_SOURCES
170
97
fontawesome/iconhelper.h
@@ -181,13 +108,33 @@ set(QC_UIBASE_SOURCES
181
108
)
182
109
source_group (uibase FILES ${QC_UIBASE_SOURCES} )
183
110
111
+ # ui
112
+ set (QC_UI_SOURCES
113
+ ui/toolform.h
114
+ ui/toolform.cpp
115
+ ui/toolform.ui
116
+ ui/videoform.h
117
+ ui/videoform.cpp
118
+ ui/videoform.ui
119
+ ui/dialog.cpp
120
+ ui/dialog.h
121
+ ui/dialog.ui
122
+ render/qyuvopenglwidget.h
123
+ render/qyuvopenglwidget.cpp
124
+ )
125
+ source_group (ui FILES ${QC_UI_SOURCES} )
126
+
127
+ # group controller
128
+ set (QC_GROUP_CONTROLLER
129
+ groupcontroller/groupcontroller.h
130
+ groupcontroller/groupcontroller.cpp
131
+ )
132
+ source_group (groupcontroller FILES ${QC_GROUP_CONTROLLER} )
133
+
184
134
# util
185
135
set (QC_UTIL_SOURCES
186
- util/compat.h
187
136
util/config.h
188
137
util/config.cpp
189
- util/bufferutil.h
190
- util/bufferutil.cpp
191
138
util/mousetap/mousetap.h
192
139
util/mousetap/mousetap.cpp
193
140
)
@@ -217,9 +164,6 @@ set(QC_QRC_SOURCES "res/res.qrc")
217
164
# main
218
165
set (QC_MAIN_SOURCES
219
166
main.cpp
220
- dialog.cpp
221
- dialog.h
222
- dialog.ui
223
167
${QC_QRC_SOURCES}
224
168
)
225
169
@@ -243,25 +187,17 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
243
187
)
244
188
endif ()
245
189
246
- # 使用qt5_add_translation 根据已有ts文件生成qm文件,不用qt5_create_translation
247
- # 感兴趣可以了解下qt5_create_translation用法 https://www.cnblogs.com/apocelipes/p/14355460.html
248
- set (QC_TS_FILES
249
- ${CMAKE_CURRENT_SOURCE_DIR} /res/i18n/zh_CN.ts
250
- ${CMAKE_CURRENT_SOURCE_DIR} /res/i18n/en_US.ts
251
- )
252
- set_source_files_properties (${QC_TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_SOURCE_DIR} /res/i18n" )
253
- qt5_add_translation(QC_QM_FILES ${QC_TS_FILES} )
190
+ # 翻译相关(使用shell脚本替代cmake处理翻译)
191
+ # add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/res/i18n)
254
192
255
193
# all sources
256
194
set (QC_PROJECT_SOURCES
257
- ${QC_ADB_SOURCES}
258
- ${QC_COMMON_SOURCES}
259
- ${QC_DEVICE_SOURCES}
260
- ${QC_DEVICEMANAGE_SOURCES}
261
195
${QC_FONTAWESOME_SOURCES}
262
196
${QC_UIBASE_SOURCES}
197
+ ${QC_UI_SOURCES}
263
198
${QC_UTIL_SOURCES}
264
199
${QC_MAIN_SOURCES}
200
+ ${QC_GROUP_CONTROLLER}
265
201
${QC_PLANTFORM_SOURCES}
266
202
)
267
203
@@ -279,35 +215,11 @@ add_executable(${PROJECT_NAME} ${QC_RUNTIME_TYPE} ${QC_PROJECT_SOURCES})
279
215
# Internal include path (todo: remove this, use absolute path include)
280
216
#
281
217
282
- target_include_directories (${PROJECT_NAME} PRIVATE adb)
283
- target_include_directories (${PROJECT_NAME} PRIVATE common)
284
- target_include_directories (${PROJECT_NAME} PRIVATE device)
285
- target_include_directories (${PROJECT_NAME} PRIVATE device/filehandler)
286
- target_include_directories (${PROJECT_NAME} PRIVATE device/android)
287
- target_include_directories (${PROJECT_NAME} PRIVATE device/decoder)
288
- target_include_directories (${PROJECT_NAME} PRIVATE device/controller)
289
- target_include_directories (${PROJECT_NAME} PRIVATE device/controller/receiver)
290
- target_include_directories (${PROJECT_NAME} PRIVATE device/controller/inputconvert)
291
- target_include_directories (${PROJECT_NAME} PRIVATE device/controller/inputconvert/keymap)
292
- target_include_directories (${PROJECT_NAME} PRIVATE device/server)
293
- target_include_directories (${PROJECT_NAME} PRIVATE device/stream)
294
- target_include_directories (${PROJECT_NAME} PRIVATE device/render)
295
- target_include_directories (${PROJECT_NAME} PRIVATE device/ui)
296
- target_include_directories (${PROJECT_NAME} PRIVATE device/recorder)
297
- target_include_directories (${PROJECT_NAME} PRIVATE devicemanage)
298
218
target_include_directories (${PROJECT_NAME} PRIVATE fontawesome)
299
219
target_include_directories (${PROJECT_NAME} PRIVATE util)
300
220
target_include_directories (${PROJECT_NAME} PRIVATE uibase)
301
-
302
- #
303
- # common deps
304
- #
305
-
306
- # Qt
307
- target_link_libraries (${PROJECT_NAME} PRIVATE
308
- Qt${QT_VERSION_MAJOR} ::Widgets
309
- Qt${QT_VERSION_MAJOR} ::Network
310
- )
221
+ target_include_directories (${PROJECT_NAME} PRIVATE ui)
222
+ target_include_directories (${PROJECT_NAME} PRIVATE render)
311
223
312
224
# output dir
313
225
# https://cmake.org/cmake/help/latest/prop_gbl/GENERATOR_IS_MULTI_CONFIG.html
@@ -328,60 +240,21 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
328
240
329
241
# windows
330
242
if (CMAKE_SYSTEM_NAME STREQUAL "Windows" )
331
- # ffmpeg
332
- # include
333
- target_include_directories (${PROJECT_NAME} PRIVATE ../third_party/ffmpeg/include )
334
- # link
335
- set (FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/ffmpeg/lib/${QC_CPU_ARCH} " )
336
- target_link_directories (${PROJECT_NAME} PRIVATE ${FFMPEG_LIB_PATH} )
337
- target_link_libraries (${PROJECT_NAME} PRIVATE
338
- avformat
339
- avcodec
340
- avutil
341
- swscale
342
- )
343
- # copy
344
- set (FFMPEG_BIN_PATH "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/ffmpeg/bin/${QC_CPU_ARCH} " )
345
- get_target_property (FFMPEG_BIN_OUTPUT_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY )
346
- add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
347
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH} /avcodec-58.dll" "${FFMPEG_BIN_OUTPUT_PATH} "
348
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH} /avformat-58.dll" "${FFMPEG_BIN_OUTPUT_PATH} "
349
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH} /avutil-56.dll" "${FFMPEG_BIN_OUTPUT_PATH} "
350
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH} /swscale-5.dll" "${FFMPEG_BIN_OUTPUT_PATH} "
351
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH} /swresample-3.dll" "${FFMPEG_BIN_OUTPUT_PATH} "
352
- )
243
+ get_target_property (QSC_BIN_OUTPUT_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY )
244
+ set (QSC_DEPLOY_PATH ${QSC_BIN_OUTPUT_PATH} )
353
245
endif ()
354
246
355
247
# MacOS
356
248
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
357
- # ffmpeg
358
- # include
359
- target_include_directories (${PROJECT_NAME} PRIVATE ../third_party/ffmpeg/include )
360
- # link
361
- set (FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/ffmpeg/lib" )
362
- target_link_directories (${PROJECT_NAME} PRIVATE ${FFMPEG_LIB_PATH} )
363
- target_link_libraries (${PROJECT_NAME} PRIVATE
364
- avformat.58
365
- avcodec.58
366
- avutil.56
367
- swscale.5
368
- )
369
-
370
249
# copy bundle file
371
250
get_target_property (MACOS_BUNDLE_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY )
372
251
set (MACOS_BUNDLE_PATH ${MACOS_BUNDLE_PATH} /${PROJECT_NAME} .app/Contents)
252
+
253
+ set (QSC_DEPLOY_PATH ${MACOS_BUNDLE_PATH} )
254
+
373
255
add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
374
- # dylib,scrcpy-server,adb copy to Contents/MacOS
375
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/ffmpeg/lib/libavcodec.58.dylib" "${MACOS_BUNDLE_PATH} /MacOS"
376
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/ffmpeg/lib/libavformat.58.dylib" "${MACOS_BUNDLE_PATH} /MacOS"
377
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/ffmpeg/lib/libavutil.56.dylib" "${MACOS_BUNDLE_PATH} /MacOS"
378
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/ffmpeg/lib/libswscale.5.dylib" "${MACOS_BUNDLE_PATH} /MacOS"
379
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/ffmpeg/lib/libswresample.3.dylib" "${MACOS_BUNDLE_PATH} /MacOS"
380
-
381
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/scrcpy-server" "${MACOS_BUNDLE_PATH} /MacOS"
382
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/adb/mac/adb" "${MACOS_BUNDLE_PATH} /MacOS"
383
256
# config file copy to Contents/MacOS/config
384
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR} /../config/config.ini" "${MACOS_BUNDLE_PATH} /MacOS/config"
257
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR} /../config/config.ini" "${MACOS_BUNDLE_PATH} /MacOS/config/config.ini "
385
258
)
386
259
387
260
# Step 2. ues MACOSX_PACKAGE_LOCATION copy icns to Resources
@@ -408,20 +281,13 @@ endif()
408
281
409
282
# Linux
410
283
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
284
+ get_target_property (QSC_BIN_OUTPUT_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY )
285
+ set (QSC_DEPLOY_PATH ${QSC_BIN_OUTPUT_PATH} )
286
+
411
287
set (THREADS_PREFER_PTHREAD_FLAG ON )
412
288
find_package (Threads REQUIRED)
413
289
414
- # include
415
- target_include_directories (${PROJECT_NAME} PRIVATE ../third_party/ffmpeg/include )
416
- # link
417
- set (FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR} /../third_party/ffmpeg/lib" )
418
- target_link_directories (${PROJECT_NAME} PRIVATE ${FFMPEG_LIB_PATH} )
419
290
target_link_libraries (${PROJECT_NAME} PRIVATE
420
- # ffmpeg
421
- avformat
422
- avcodec
423
- avutil
424
- swscale
425
291
# qx11
426
292
Qt${QT_VERSION_MAJOR} ::X11Extras
427
293
# xcb https://doc.qt.io/qt-5/linux-requirements.html
@@ -431,4 +297,17 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
431
297
)
432
298
433
299
# linux set app icon: https://blog.csdn.net/MrNoboday/article/details/82870853
434
- endif ()
300
+ endif ()
301
+
302
+ #
303
+ # common deps
304
+ #
305
+
306
+ add_subdirectory (QtScrcpyCore)
307
+
308
+ # Qt
309
+ target_link_libraries (${PROJECT_NAME} PRIVATE
310
+ Qt${QT_VERSION_MAJOR} ::Widgets
311
+ Qt${QT_VERSION_MAJOR} ::Network
312
+ QtScrcpyCore
313
+ )
0 commit comments