Skip to content

Commit d5e915d

Browse files
authored
Merge pull request #621 from barry-ran/dev
refactor: add QtScrcpyCore submodule
2 parents bb43261 + 31736d9 commit d5e915d

File tree

208 files changed

+971
-37073
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

208 files changed

+971
-37073
lines changed

Diff for: .github/workflows/macos.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@ jobs:
3535
with:
3636
version: ${{ matrix.qt-ver }}
3737
cached: ${{ steps.cache-qt.outputs.cache-hit }}
38-
- uses: actions/checkout@v1
38+
- uses: actions/checkout@v2
3939
with:
40-
fetch-depth: 1
40+
fetch-depth: 0
41+
submodules: 'true'
42+
ssh-key: ${{ secrets.BOT_SSH_KEY }}
4143
# 编译
4244
- name: Build MacOS
4345
env:

Diff for: .github/workflows/ubuntu.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,11 @@ jobs:
4040
cached: ${{ steps.cache-qt.outputs.cache-hit }}
4141
- name: Ubuntu install GL library
4242
run: sudo apt-get install -y libglew-dev libglfw3-dev
43-
- uses: actions/checkout@v1
43+
- uses: actions/checkout@v2
4444
with:
45-
fetch-depth: 1
45+
fetch-depth: 0
46+
submodules: 'true'
47+
ssh-key: ${{ secrets.BOT_SSH_KEY }}
4648
- name: Build Ubuntu
4749
env:
4850
ENV_QT_PATH: ${{ env.qt-install-path }}

Diff for: .github/workflows/windows.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,11 @@ jobs:
6464
arch: ${{ matrix.qt-arch }}
6565
cached: ${{ steps.cache-qt.outputs.cache-hit }}
6666
# 拉取代码
67-
- uses: actions/checkout@v1
67+
- uses: actions/checkout@v2
6868
with:
69-
fetch-depth: 1
69+
fetch-depth: 0
70+
submodules: 'true'
71+
ssh-key: ${{ secrets.BOT_SSH_KEY }}
7072
# 编译msvc
7173
- name: Build MSVC
7274
# shell介绍 https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#using-a-specific-shell

Diff for: .gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "QtScrcpy/QtScrcpyCore"]
2+
path = QtScrcpy/QtScrcpyCore
3+
url = [email protected]:barry-ran/QtScrcpyCore.git

Diff for: QtScrcpy/CMakeLists.txt

+56-177
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ endif()
2929
message(STATUS "[${PROJECT_NAME}] CPU_ARCH:${QC_CPU_ARCH}")
3030

3131
# CMake set
32-
#set(CMAKE_INCLUDE_CURRENT_DIR ON)
32+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
3333
set(CMAKE_CXX_STANDARD 11)
3434
set(CMAKE_CXX_STANDARD_REQUIRED ON)
3535

@@ -68,7 +68,7 @@ if (NOT MSVC)
6868
add_compile_options(-Wall -Wextra -pedantic -Werror)
6969

7070
# 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)
7272
endif()
7373

7474
#
@@ -79,8 +79,8 @@ set(CMAKE_AUTOUIC ON)
7979
set(CMAKE_AUTOMOC ON)
8080
set(CMAKE_AUTORCC ON)
8181

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)
8484
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
8585
find_package(QT NAMES Qt6 Qt5 COMPONENTS X11Extras REQUIRED)
8686
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
9292
# Sources
9393
#
9494

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-
16895
# fontawesome
16996
set(QC_FONTAWESOME_SOURCES
17097
fontawesome/iconhelper.h
@@ -181,13 +108,33 @@ set(QC_UIBASE_SOURCES
181108
)
182109
source_group(uibase FILES ${QC_UIBASE_SOURCES})
183110

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+
184134
# util
185135
set(QC_UTIL_SOURCES
186-
util/compat.h
187136
util/config.h
188137
util/config.cpp
189-
util/bufferutil.h
190-
util/bufferutil.cpp
191138
util/mousetap/mousetap.h
192139
util/mousetap/mousetap.cpp
193140
)
@@ -217,9 +164,6 @@ set(QC_QRC_SOURCES "res/res.qrc")
217164
# main
218165
set(QC_MAIN_SOURCES
219166
main.cpp
220-
dialog.cpp
221-
dialog.h
222-
dialog.ui
223167
${QC_QRC_SOURCES}
224168
)
225169

@@ -243,25 +187,17 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
243187
)
244188
endif()
245189

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)
254192

255193
# all sources
256194
set(QC_PROJECT_SOURCES
257-
${QC_ADB_SOURCES}
258-
${QC_COMMON_SOURCES}
259-
${QC_DEVICE_SOURCES}
260-
${QC_DEVICEMANAGE_SOURCES}
261195
${QC_FONTAWESOME_SOURCES}
262196
${QC_UIBASE_SOURCES}
197+
${QC_UI_SOURCES}
263198
${QC_UTIL_SOURCES}
264199
${QC_MAIN_SOURCES}
200+
${QC_GROUP_CONTROLLER}
265201
${QC_PLANTFORM_SOURCES}
266202
)
267203

@@ -279,35 +215,11 @@ add_executable(${PROJECT_NAME} ${QC_RUNTIME_TYPE} ${QC_PROJECT_SOURCES})
279215
# Internal include path (todo: remove this, use absolute path include)
280216
#
281217

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)
298218
target_include_directories(${PROJECT_NAME} PRIVATE fontawesome)
299219
target_include_directories(${PROJECT_NAME} PRIVATE util)
300220
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)
311223

312224
# output dir
313225
# https://cmake.org/cmake/help/latest/prop_gbl/GENERATOR_IS_MULTI_CONFIG.html
@@ -328,60 +240,21 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
328240

329241
# windows
330242
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})
353245
endif()
354246

355247
# MacOS
356248
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-
370249
# copy bundle file
371250
get_target_property(MACOS_BUNDLE_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY)
372251
set(MACOS_BUNDLE_PATH ${MACOS_BUNDLE_PATH}/${PROJECT_NAME}.app/Contents)
252+
253+
set(QSC_DEPLOY_PATH ${MACOS_BUNDLE_PATH})
254+
373255
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"
383256
# 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"
385258
)
386259

387260
# Step 2. ues MACOSX_PACKAGE_LOCATION copy icns to Resources
@@ -408,20 +281,13 @@ endif()
408281

409282
# Linux
410283
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+
411287
set(THREADS_PREFER_PTHREAD_FLAG ON)
412288
find_package(Threads REQUIRED)
413289

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})
419290
target_link_libraries(${PROJECT_NAME} PRIVATE
420-
# ffmpeg
421-
avformat
422-
avcodec
423-
avutil
424-
swscale
425291
# qx11
426292
Qt${QT_VERSION_MAJOR}::X11Extras
427293
# xcb https://doc.qt.io/qt-5/linux-requirements.html
@@ -431,4 +297,17 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
431297
)
432298

433299
# 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

Comments
 (0)