mirror of
https://github.com/barry-ran/QtScrcpy.git
synced 2025-04-20 03:25:02 +00:00
refactor: QtScrcpyCore static lib
This commit is contained in:
parent
1296158871
commit
6214fb6a87
12 changed files with 268 additions and 214 deletions
|
@ -29,7 +29,7 @@ endif()
|
|||
message(STATUS "[${PROJECT_NAME}] CPU_ARCH:${QC_CPU_ARCH}")
|
||||
|
||||
# CMake set
|
||||
#set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
|
@ -92,84 +92,6 @@ message(STATUS "[${PROJECT_NAME}] Qt version is: ${QT_VERSION_MAJOR}.${QT_VERSIO
|
|||
# Sources
|
||||
#
|
||||
|
||||
# adb
|
||||
set(QC_ADB_SOURCES
|
||||
QtScrcpyCore/src/adb/adbprocessimpl.h
|
||||
QtScrcpyCore/src/adb/adbprocessimpl.cpp
|
||||
QtScrcpyCore/src/adb/adbprocess.cpp
|
||||
)
|
||||
source_group(QtScrcpyCore/src/adb FILES ${QC_ADB_SOURCES})
|
||||
|
||||
# common
|
||||
set(QC_COMMON_SOURCES
|
||||
QtScrcpyCore/src/common/qscrcpyevent.h
|
||||
)
|
||||
source_group(QtScrcpyCore/src/common FILES ${QC_COMMON_SOURCES})
|
||||
|
||||
# include
|
||||
set(QC_INCLUDE_SOURCES
|
||||
QtScrcpyCore/include/QtScrcpyCore.h
|
||||
QtScrcpyCore/include/QtScrcpyCoreDef.h
|
||||
QtScrcpyCore/include/adbprocess.h
|
||||
)
|
||||
source_group(QtScrcpyCore/include FILES ${QC_INCLUDE_SOURCES})
|
||||
|
||||
# device
|
||||
set(QC_DEVICE_SOURCES
|
||||
QtScrcpyCore/src/device/device.h
|
||||
QtScrcpyCore/src/device/device.cpp
|
||||
QtScrcpyCore/src/device/android/input.h
|
||||
QtScrcpyCore/src/device/android/keycodes.h
|
||||
QtScrcpyCore/src/device/controller/controller.h
|
||||
QtScrcpyCore/src/device/controller/controller.cpp
|
||||
QtScrcpyCore/src/device/controller/bufferutil.h
|
||||
QtScrcpyCore/src/device/controller/bufferutil.cpp
|
||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertbase.h
|
||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertbase.cpp
|
||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertnormal.h
|
||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertnormal.cpp
|
||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertgame.h
|
||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertgame.cpp
|
||||
QtScrcpyCore/src/device/controller/inputconvert/controlmsg.h
|
||||
QtScrcpyCore/src/device/controller/inputconvert/controlmsg.cpp
|
||||
QtScrcpyCore/src/device/controller/inputconvert/keymap/keymap.h
|
||||
QtScrcpyCore/src/device/controller/inputconvert/keymap/keymap.cpp
|
||||
QtScrcpyCore/src/device/controller/receiver/devicemsg.h
|
||||
QtScrcpyCore/src/device/controller/receiver/devicemsg.cpp
|
||||
QtScrcpyCore/src/device/controller/receiver/receiver.h
|
||||
QtScrcpyCore/src/device/controller/receiver/receiver.cpp
|
||||
QtScrcpyCore/src/device/decoder/avframeconvert.h
|
||||
QtScrcpyCore/src/device/decoder/avframeconvert.cpp
|
||||
QtScrcpyCore/src/device/decoder/decoder.h
|
||||
QtScrcpyCore/src/device/decoder/decoder.cpp
|
||||
QtScrcpyCore/src/device/decoder/fpscounter.h
|
||||
QtScrcpyCore/src/device/decoder/fpscounter.cpp
|
||||
QtScrcpyCore/src/device/decoder/videobuffer.h
|
||||
QtScrcpyCore/src/device/decoder/videobuffer.cpp
|
||||
QtScrcpyCore/src/device/filehandler/filehandler.h
|
||||
QtScrcpyCore/src/device/filehandler/filehandler.cpp
|
||||
QtScrcpyCore/src/device/recorder/recorder.h
|
||||
QtScrcpyCore/src/device/recorder/recorder.cpp
|
||||
QtScrcpyCore/src/device/render/qyuvopenglwidget.h
|
||||
QtScrcpyCore/src/device/render/qyuvopenglwidget.cpp
|
||||
QtScrcpyCore/src/device/server/server.h
|
||||
QtScrcpyCore/src/device/server/server.cpp
|
||||
QtScrcpyCore/src/device/server/tcpserver.h
|
||||
QtScrcpyCore/src/device/server/tcpserver.cpp
|
||||
QtScrcpyCore/src/device/server/videosocket.h
|
||||
QtScrcpyCore/src/device/server/videosocket.cpp
|
||||
QtScrcpyCore/src/device/stream/stream.h
|
||||
QtScrcpyCore/src/device/stream/stream.cpp
|
||||
)
|
||||
source_group(QtScrcpyCore/src/device FILES ${QC_DEVICE_SOURCES})
|
||||
|
||||
# devicemanage
|
||||
set(QC_DEVICEMANAGE_SOURCES
|
||||
QtScrcpyCore/src/devicemanage/devicemanage.h
|
||||
QtScrcpyCore/src/devicemanage/devicemanage.cpp
|
||||
)
|
||||
source_group(QtScrcpyCore/src/devicemanage FILES ${QC_DEVICEMANAGE_SOURCES})
|
||||
|
||||
# fontawesome
|
||||
set(QC_FONTAWESOME_SOURCES
|
||||
fontawesome/iconhelper.h
|
||||
|
@ -197,12 +119,13 @@ set(QC_UI_SOURCES
|
|||
ui/dialog.cpp
|
||||
ui/dialog.h
|
||||
ui/dialog.ui
|
||||
render/qyuvopenglwidget.h
|
||||
render/qyuvopenglwidget.cpp
|
||||
)
|
||||
source_group(ui FILES ${QC_UI_SOURCES})
|
||||
|
||||
# util
|
||||
set(QC_UTIL_SOURCES
|
||||
util/compat.h
|
||||
util/config.h
|
||||
util/config.cpp
|
||||
util/mousetap/mousetap.h
|
||||
|
@ -268,11 +191,6 @@ qt5_add_translation(QC_QM_FILES ${QC_TS_FILES})
|
|||
|
||||
# all sources
|
||||
set(QC_PROJECT_SOURCES
|
||||
${QC_INCLUDE_SOURCES}
|
||||
${QC_ADB_SOURCES}
|
||||
${QC_COMMON_SOURCES}
|
||||
${QC_DEVICE_SOURCES}
|
||||
${QC_DEVICEMANAGE_SOURCES}
|
||||
${QC_FONTAWESOME_SOURCES}
|
||||
${QC_UIBASE_SOURCES}
|
||||
${QC_UI_SOURCES}
|
||||
|
@ -295,37 +213,11 @@ add_executable(${PROJECT_NAME} ${QC_RUNTIME_TYPE} ${QC_PROJECT_SOURCES})
|
|||
# Internal include path (todo: remove this, use absolute path include)
|
||||
#
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/include)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/adb)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/common)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/filehandler)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/android)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/decoder)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/controller)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/controller/receiver)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/controller/inputconvert)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/controller/inputconvert/keymap)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/server)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/stream)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/render)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/ui)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/recorder)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/devicemanage)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE fontawesome)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE util)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE uibase)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ui)
|
||||
|
||||
#
|
||||
# common deps
|
||||
#
|
||||
|
||||
# Qt
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::Widgets
|
||||
Qt${QT_VERSION_MAJOR}::Network
|
||||
)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE render)
|
||||
|
||||
# output dir
|
||||
# https://cmake.org/cmake/help/latest/prop_gbl/GENERATOR_IS_MULTI_CONFIG.html
|
||||
|
@ -346,58 +238,19 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
|
|||
|
||||
# windows
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
# ffmpeg
|
||||
# include
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/include)
|
||||
# link
|
||||
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/${QC_CPU_ARCH}")
|
||||
target_link_directories(${PROJECT_NAME} PRIVATE ${FFMPEG_LIB_PATH})
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
avformat
|
||||
avcodec
|
||||
avutil
|
||||
swscale
|
||||
)
|
||||
# copy
|
||||
set(FFMPEG_BIN_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/bin/${QC_CPU_ARCH}")
|
||||
get_target_property(FFMPEG_BIN_OUTPUT_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY)
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avcodec-58.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avformat-58.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avutil-56.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/swscale-5.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/swresample-3.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
||||
)
|
||||
get_target_property(QSC_BIN_OUTPUT_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY)
|
||||
set(QSC_DEPLOY_PATH ${QSC_BIN_OUTPUT_PATH})
|
||||
endif()
|
||||
|
||||
# MacOS
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
# ffmpeg
|
||||
# include
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/include)
|
||||
# link
|
||||
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib")
|
||||
target_link_directories(${PROJECT_NAME} PRIVATE ${FFMPEG_LIB_PATH})
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
avformat.58
|
||||
avcodec.58
|
||||
avutil.56
|
||||
swscale.5
|
||||
)
|
||||
|
||||
# copy bundle file
|
||||
get_target_property(MACOS_BUNDLE_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY)
|
||||
set(MACOS_BUNDLE_PATH ${MACOS_BUNDLE_PATH}/${PROJECT_NAME}.app/Contents)
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||
# dylib,scrcpy-server,adb copy to Contents/MacOS
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libavcodec.58.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libavformat.58.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libavutil.56.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libswscale.5.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libswresample.3.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||
set(MACOS_BUNDLE_PATH ${MACOS_BUNDLE_PATH}/${QSC_PROJECT_NAME}.app/Contents)
|
||||
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/scrcpy-server" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/adb/mac/adb" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||
set(QSC_DEPLOY_PATH ${MACOS_BUNDLE_PATH})
|
||||
|
||||
add_custom_command(TARGET ${QSC_PROJECT_NAME} POST_BUILD
|
||||
# config file copy to Contents/MacOS/config
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../config/config.ini" "${MACOS_BUNDLE_PATH}/MacOS/config"
|
||||
)
|
||||
|
@ -426,27 +279,19 @@ endif()
|
|||
|
||||
# Linux
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
# include
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/include)
|
||||
# link
|
||||
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib")
|
||||
target_link_directories(${PROJECT_NAME} PRIVATE ${FFMPEG_LIB_PATH})
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
# ffmpeg
|
||||
avformat
|
||||
avcodec
|
||||
avutil
|
||||
swscale
|
||||
# qx11
|
||||
Qt${QT_VERSION_MAJOR}::X11Extras
|
||||
# xcb https://doc.qt.io/qt-5/linux-requirements.html
|
||||
xcb
|
||||
# pthread
|
||||
Threads::Threads
|
||||
)
|
||||
|
||||
set(QSC_DEPLOY_PATH "")
|
||||
# linux set app icon: https://blog.csdn.net/MrNoboday/article/details/82870853
|
||||
endif()
|
||||
|
||||
#
|
||||
# common deps
|
||||
#
|
||||
|
||||
add_subdirectory(QtScrcpyCore)
|
||||
|
||||
# Qt
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::Widgets
|
||||
Qt${QT_VERSION_MAJOR}::Network
|
||||
QtScrcpyCore
|
||||
)
|
||||
|
|
219
QtScrcpy/QtScrcpyCore/CMakeLists.txt
Normal file
219
QtScrcpy/QtScrcpyCore/CMakeLists.txt
Normal file
|
@ -0,0 +1,219 @@
|
|||
set(QSC_PROJECT_NAME "QtScrcpyCore")
|
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Network REQUIRED)
|
||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network REQUIRED)
|
||||
|
||||
# check arch
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(QSC_CPU_ARCH x64)
|
||||
else()
|
||||
set(QSC_CPU_ARCH x86)
|
||||
endif()
|
||||
message(STATUS "[${PROJECT_NAME}] QSC_CPU_ARCH:${QSC_CPU_ARCH}")
|
||||
|
||||
if(NOT DEFINED QSC_DEPLOY_PATH)
|
||||
message(FATAL_ERROR "QtScrcpyCore need QSC_DEPLOY_PATH")
|
||||
endif()
|
||||
|
||||
#
|
||||
# Sources
|
||||
#
|
||||
|
||||
# adb
|
||||
set(QSC_ADB_SOURCES
|
||||
src/adb/adbprocessimpl.h
|
||||
src/adb/adbprocessimpl.cpp
|
||||
src/adb/adbprocess.cpp
|
||||
)
|
||||
source_group(src/adb FILES ${QSC_ADB_SOURCES})
|
||||
|
||||
# common
|
||||
set(QSC_COMMON_SOURCES
|
||||
src/common/qscrcpyevent.h
|
||||
)
|
||||
source_group(src/common FILES ${QSC_COMMON_SOURCES})
|
||||
|
||||
# include
|
||||
set(QSC_INCLUDE_SOURCES
|
||||
include/QtScrcpyCore.h
|
||||
include/QtScrcpyCoreDef.h
|
||||
include/adbprocess.h
|
||||
)
|
||||
source_group(include FILES ${QSC_INCLUDE_SOURCES})
|
||||
|
||||
# device
|
||||
set(QSC_DEVICE_SOURCES
|
||||
src/device/device.h
|
||||
src/device/device.cpp
|
||||
src/device/compat.h
|
||||
src/device/android/input.h
|
||||
src/device/android/keycodes.h
|
||||
src/device/controller/controller.h
|
||||
src/device/controller/controller.cpp
|
||||
src/device/controller/bufferutil.h
|
||||
src/device/controller/bufferutil.cpp
|
||||
src/device/controller/inputconvert/inputconvertbase.h
|
||||
src/device/controller/inputconvert/inputconvertbase.cpp
|
||||
src/device/controller/inputconvert/inputconvertnormal.h
|
||||
src/device/controller/inputconvert/inputconvertnormal.cpp
|
||||
src/device/controller/inputconvert/inputconvertgame.h
|
||||
src/device/controller/inputconvert/inputconvertgame.cpp
|
||||
src/device/controller/inputconvert/controlmsg.h
|
||||
src/device/controller/inputconvert/controlmsg.cpp
|
||||
src/device/controller/inputconvert/keymap/keymap.h
|
||||
src/device/controller/inputconvert/keymap/keymap.cpp
|
||||
src/device/controller/receiver/devicemsg.h
|
||||
src/device/controller/receiver/devicemsg.cpp
|
||||
src/device/controller/receiver/receiver.h
|
||||
src/device/controller/receiver/receiver.cpp
|
||||
src/device/decoder/avframeconvert.h
|
||||
src/device/decoder/avframeconvert.cpp
|
||||
src/device/decoder/decoder.h
|
||||
src/device/decoder/decoder.cpp
|
||||
src/device/decoder/fpscounter.h
|
||||
src/device/decoder/fpscounter.cpp
|
||||
src/device/decoder/videobuffer.h
|
||||
src/device/decoder/videobuffer.cpp
|
||||
src/device/filehandler/filehandler.h
|
||||
src/device/filehandler/filehandler.cpp
|
||||
src/device/recorder/recorder.h
|
||||
src/device/recorder/recorder.cpp
|
||||
src/device/server/server.h
|
||||
src/device/server/server.cpp
|
||||
src/device/server/tcpserver.h
|
||||
src/device/server/tcpserver.cpp
|
||||
src/device/server/videosocket.h
|
||||
src/device/server/videosocket.cpp
|
||||
src/device/stream/stream.h
|
||||
src/device/stream/stream.cpp
|
||||
)
|
||||
source_group(src/device FILES ${QSC_DEVICE_SOURCES})
|
||||
|
||||
# devicemanage
|
||||
set(QSC_DEVICEMANAGE_SOURCES
|
||||
src/devicemanage/devicemanage.h
|
||||
src/devicemanage/devicemanage.cpp
|
||||
)
|
||||
source_group(src/devicemanage FILES ${QSC_DEVICEMANAGE_SOURCES})
|
||||
|
||||
add_library(QtScrcpyCore STATIC
|
||||
${QSC_ADB_SOURCES}
|
||||
${QSC_COMMON_SOURCES}
|
||||
${QSC_INCLUDE_SOURCES}
|
||||
${QSC_DEVICE_SOURCES}
|
||||
${QSC_DEVICEMANAGE_SOURCES}
|
||||
)
|
||||
|
||||
target_link_libraries(QtScrcpyCore PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::Widgets
|
||||
Qt${QT_VERSION_MAJOR}::Network
|
||||
)
|
||||
|
||||
target_include_directories(${QSC_PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/adb)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/common)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/filehandler)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/android)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/decoder)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/controller)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/controller/receiver)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/controller/inputconvert)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/controller/inputconvert/keymap)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/server)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/stream)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/ui)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/recorder)
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/devicemanage)
|
||||
|
||||
|
||||
#
|
||||
# plantform deps
|
||||
#
|
||||
|
||||
# windows
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
# ffmpeg
|
||||
# include
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/include)
|
||||
# link
|
||||
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/${QSC_CPU_ARCH}")
|
||||
target_link_directories(${QSC_PROJECT_NAME} PUBLIC ${FFMPEG_LIB_PATH})
|
||||
target_link_libraries(${QSC_PROJECT_NAME} PRIVATE
|
||||
avformat
|
||||
avcodec
|
||||
avutil
|
||||
swscale
|
||||
)
|
||||
# copy
|
||||
set(FFMPEG_BIN_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/bin/${QSC_CPU_ARCH}")
|
||||
add_custom_command(TARGET ${QSC_PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avcodec-58.dll" "${QSC_DEPLOY_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avformat-58.dll" "${QSC_DEPLOY_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avutil-56.dll" "${QSC_DEPLOY_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/swscale-5.dll" "${QSC_DEPLOY_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/swresample-3.dll" "${QSC_DEPLOY_PATH}"
|
||||
)
|
||||
endif()
|
||||
|
||||
# MacOS
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
# ffmpeg
|
||||
# include
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/include)
|
||||
# link
|
||||
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib")
|
||||
target_link_directories(${QSC_PROJECT_NAME} PUBLIC ${FFMPEG_LIB_PATH})
|
||||
target_link_libraries(${QSC_PROJECT_NAME} PRIVATE
|
||||
avformat.58
|
||||
avcodec.58
|
||||
avutil.56
|
||||
swscale.5
|
||||
)
|
||||
|
||||
# copy bundle file
|
||||
add_custom_command(TARGET ${QSC_PROJECT_NAME} POST_BUILD
|
||||
# dylib,scrcpy-server,adb copy to Contents/MacOS
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libavcodec.58.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libavformat.58.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libavutil.56.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libswscale.5.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libswresample.3.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/scrcpy-server" "${QSC_DEPLOY_PATH}/MacOS"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/adb/mac/adb" "${QSC_DEPLOY_PATH}/MacOS"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Linux
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
# include
|
||||
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/include)
|
||||
# link
|
||||
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib")
|
||||
target_link_directories(${QSC_PROJECT_NAME} PUBLIC ${FFMPEG_LIB_PATH})
|
||||
target_link_libraries(${QSC_PROJECT_NAME} PRIVATE
|
||||
# ffmpeg
|
||||
avformat
|
||||
avcodec
|
||||
avutil
|
||||
swscale
|
||||
# qx11
|
||||
Qt${QT_VERSION_MAJOR}::X11Extras
|
||||
# xcb https://doc.qt.io/qt-5/linux-requirements.html
|
||||
xcb
|
||||
# pthread
|
||||
Threads::Threads
|
||||
)
|
||||
|
||||
endif()
|
|
@ -8,24 +8,10 @@
|
|||
|
||||
#include "keymap.h"
|
||||
|
||||
QString KeyMap::s_keyMapPath = "";
|
||||
|
||||
KeyMap::KeyMap(QObject *parent) : QObject(parent) {}
|
||||
|
||||
KeyMap::~KeyMap() {}
|
||||
|
||||
const QString &KeyMap::getKeyMapPath()
|
||||
{
|
||||
if (s_keyMapPath.isEmpty()) {
|
||||
s_keyMapPath = QString::fromLocal8Bit(qgetenv("QTSCRCPY_KEYMAP_PATH"));
|
||||
QFileInfo fileInfo(s_keyMapPath);
|
||||
if (s_keyMapPath.isEmpty() || !fileInfo.isDir()) {
|
||||
s_keyMapPath = QCoreApplication::applicationDirPath() + "/keymap";
|
||||
}
|
||||
}
|
||||
return s_keyMapPath;
|
||||
}
|
||||
|
||||
void KeyMap::loadKeyMap(const QString &json)
|
||||
{
|
||||
QString errorString;
|
||||
|
|
|
@ -117,8 +117,6 @@ public:
|
|||
bool isValidSteerWheelMap();
|
||||
const KeyMap::KeyMapNode &getMouseMoveMap();
|
||||
|
||||
static const QString &getKeyMapPath();
|
||||
|
||||
private:
|
||||
// set up the reverse map from key/event event to keyMapNode
|
||||
void makeReverseMap();
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
#include "recorder.h"
|
||||
#include "server.h"
|
||||
#include "stream.h"
|
||||
#include "videoform.h"
|
||||
|
||||
namespace qsc {
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
#include "devicemanage.h"
|
||||
#include "server.h"
|
||||
#include "videoform.h"
|
||||
#include "device.h"
|
||||
#include "stream.h"
|
||||
|
||||
namespace qsc {
|
||||
|
||||
|
@ -17,9 +17,13 @@ IDeviceManage& IDeviceManage::getInstance() {
|
|||
return dm;
|
||||
}
|
||||
|
||||
DeviceManage::DeviceManage() {}
|
||||
DeviceManage::DeviceManage() {
|
||||
Stream::init();
|
||||
}
|
||||
|
||||
DeviceManage::~DeviceManage() {}
|
||||
DeviceManage::~DeviceManage() {
|
||||
Stream::deInit();
|
||||
}
|
||||
|
||||
QPointer<IDevice> DeviceManage::getDevice(const QString &serial)
|
||||
{
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
#include "config.h"
|
||||
#include "dialog.h"
|
||||
#include "mousetap/mousetap.h"
|
||||
#include "stream.h"
|
||||
|
||||
static Dialog *g_mainDlg = Q_NULLPTR;
|
||||
static QtMessageHandler g_oldMessageHandler = Q_NULLPTR;
|
||||
|
@ -73,7 +72,6 @@ int main(int argc, char *argv[])
|
|||
QSurfaceFormat::setDefaultFormat(varFormat);
|
||||
|
||||
g_oldMessageHandler = qInstallMessageHandler(myMessageOutput);
|
||||
Stream::init();
|
||||
QApplication a(argc, argv);
|
||||
|
||||
// windows下通过qmake VERSION变量或者rc设置版本号和应用名称后,这里可以直接拿到
|
||||
|
@ -118,8 +116,6 @@ int main(int argc, char *argv[])
|
|||
#if defined(Q_OS_WIN32) || defined(Q_OS_OSX)
|
||||
MouseTap::getInstance()->quitMouseEventTap();
|
||||
#endif
|
||||
|
||||
Stream::deInit();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,12 +6,24 @@
|
|||
#include <QTimer>
|
||||
|
||||
#include "config.h"
|
||||
#include "device.h"
|
||||
#include "dialog.h"
|
||||
#include "keymap.h"
|
||||
#include "ui_dialog.h"
|
||||
#include "videoform.h"
|
||||
|
||||
QString s_keyMapPath = "";
|
||||
|
||||
const QString &getKeyMapPath()
|
||||
{
|
||||
if (s_keyMapPath.isEmpty()) {
|
||||
s_keyMapPath = QString::fromLocal8Bit(qgetenv("QTSCRCPY_KEYMAP_PATH"));
|
||||
QFileInfo fileInfo(s_keyMapPath);
|
||||
if (s_keyMapPath.isEmpty() || !fileInfo.isDir()) {
|
||||
s_keyMapPath = QCoreApplication::applicationDirPath() + "/keymap";
|
||||
}
|
||||
}
|
||||
return s_keyMapPath;
|
||||
}
|
||||
|
||||
Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
@ -214,7 +226,7 @@ void Dialog::delayMs(int ms)
|
|||
|
||||
QString Dialog::getGameScript(const QString &fileName)
|
||||
{
|
||||
QFile loadFile(KeyMap::getKeyMapPath() + "/" + fileName);
|
||||
QFile loadFile(getKeyMapPath() + "/" + fileName);
|
||||
if (!loadFile.open(QIODevice::ReadOnly)) {
|
||||
outLog("open file failed:" + fileName, true);
|
||||
return "";
|
||||
|
@ -410,6 +422,7 @@ void Dialog::getIPbyIp()
|
|||
|
||||
void Dialog::onDeviceConnected(bool success, const QString &serial, const QString &deviceName, const QSize &size)
|
||||
{
|
||||
Q_UNUSED(deviceName);
|
||||
if (!success) {
|
||||
return;
|
||||
}
|
||||
|
@ -506,7 +519,7 @@ void Dialog::on_stopAllServerBtn_clicked()
|
|||
void Dialog::on_refreshGameScriptBtn_clicked()
|
||||
{
|
||||
ui->gameBox->clear();
|
||||
QDir dir(KeyMap::getKeyMapPath());
|
||||
QDir dir(getKeyMapPath());
|
||||
if (!dir.exists()) {
|
||||
outLog("keymap directory not find", true);
|
||||
return;
|
||||
|
|
|
@ -14,17 +14,12 @@
|
|||
#include <QtWidgets/QHBoxLayout>
|
||||
|
||||
#include "config.h"
|
||||
#include "controller.h"
|
||||
#include "iconhelper.h"
|
||||
#include "qyuvopenglwidget.h"
|
||||
#include "toolform.h"
|
||||
#include "mousetap/mousetap.h"
|
||||
#include "ui_videoform.h"
|
||||
#include "videoform.h"
|
||||
extern "C"
|
||||
{
|
||||
#include "libavutil/frame.h"
|
||||
}
|
||||
|
||||
VideoForm::VideoForm(bool framelessWindow, bool skin, QWidget *parent) : QWidget(parent), ui(new Ui::videoForm), m_skin(skin)
|
||||
{
|
||||
|
@ -287,7 +282,6 @@ void VideoForm::installShortcut()
|
|||
emit device->postPower();
|
||||
});
|
||||
|
||||
// setScreenPowerMode(ControlMsg::SPM_OFF)
|
||||
shortcut = new QShortcut(QKeySequence("Ctrl+o"), this);
|
||||
shortcut->setAutoRepeat(false);
|
||||
connect(shortcut, &QShortcut::activated, this, [this]() {
|
||||
|
@ -295,7 +289,7 @@ void VideoForm::installShortcut()
|
|||
if (!device) {
|
||||
return;
|
||||
}
|
||||
emit device->setScreenPowerMode(ControlMsg::SPM_OFF);
|
||||
emit device->setScreenPowerMode(false);
|
||||
});
|
||||
|
||||
// expandNotificationPanel
|
||||
|
|
Loading…
Add table
Reference in a new issue