diff --git a/-CMakeLists.txt b/-CMakeLists.txt new file mode 100644 index 0000000..4666405 --- /dev/null +++ b/-CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.19 FATAL_ERROR) + +# Read version numbers from file +file (STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/QtScrcpy/version STRING_VERSION) +message(STATUS "QtScrcpy Version ${STRING_VERSION}") +project(QtScrcpy + VERSION ${STRING_VERSION} + LANGUAGES C CXX +) + +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + enable_language(OBJCXX) +endif() + +# Split version numbers +string(REPLACE "." ";" VERSION_LIST ${STRING_VERSION}) +list(GET VERSION_LIST 0 VERSION_MAJOR) +list(GET VERSION_LIST 1 VERSION_MINOR) +list(GET VERSION_LIST 2 VERSION_PATCH) + +add_subdirectory(QtScrcpy) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4666405..7762e2a 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,21 +1,4 @@ cmake_minimum_required(VERSION 3.19 FATAL_ERROR) - -# Read version numbers from file -file (STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/QtScrcpy/version STRING_VERSION) -message(STATUS "QtScrcpy Version ${STRING_VERSION}") -project(QtScrcpy - VERSION ${STRING_VERSION} - LANGUAGES C CXX -) - -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - enable_language(OBJCXX) -endif() - -# Split version numbers -string(REPLACE "." ";" VERSION_LIST ${STRING_VERSION}) -list(GET VERSION_LIST 0 VERSION_MAJOR) -list(GET VERSION_LIST 1 VERSION_MINOR) -list(GET VERSION_LIST 2 VERSION_PATCH) +project(all) add_subdirectory(QtScrcpy) diff --git a/QtScrcpy/-CMakeLists.txt b/QtScrcpy/-CMakeLists.txt new file mode 100644 index 0000000..8c78ccb --- /dev/null +++ b/QtScrcpy/-CMakeLists.txt @@ -0,0 +1,319 @@ +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 LinguistTools REQUIRED) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network LinguistTools REQUIRED) + +if(MSVC) + # FFmpeg cannot be compiled natively by MSVC version < 12.0 (2013) + if(MSVC_VERSION LESS 1800) + message(FATAL_ERROR "[QtScrcpy] FATAL ERROR: MSVC version is older than 12.0 (2013).") + endif() + + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8") + + # ensure we use minimal "windows.h" lib without the crazy min max macros + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D \"WIN32_LEAN_AND_MEAN\"") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D \"NOMINMAX\"") + + # disable SAFESEH - to avoid "LNK2026: module unsafe" on "OpenAL32.lib" + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D \"SAFESEH:NO\"") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO") + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO") + SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO") +endif() + + +# ==================== macOS ==================== +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + # QS_MAC_RESOURCES: esource file list stored in Contents/MacOS + file(GLOB QS_MAC_RESOURCES "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/lib/*.dylib") + list(APPEND QS_MAC_RESOURCES + "${PROJECT_SOURCE_DIR}/third_party/scrcpy-server" + "${PROJECT_SOURCE_DIR}/adb/mac/adb" + ) + + # QS_MAC_CONFIG: Config file stored in Contents/MacOS/config + set(QS_MAC_CONFIG "${PROJECT_SOURCE_DIR}/config/config.ini") +endif() + +set(QS_TS_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/res/i18n/zh_CN.ts + ${CMAKE_CURRENT_SOURCE_DIR}/res/i18n/en_US.ts + ) +set_source_files_properties(${QS_TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/res/i18n") + +set(QS_SOURCES_MAIN + dialog.cpp + dialog.h + dialog.ui + ${QS_TS_FILES} +) + +set(QS_QRC_MAIN "${CMAKE_CURRENT_SOURCE_DIR}/res/res.qrc") + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) # Qt version 6 + qt_create_translation(QS_QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${QS_TS_FILES}) + + if(WIN32) + qt_add_executable(${CMAKE_PROJECT_NAME} WIN32 MANUAL_FINALIZATION + main.cpp + ${QS_SOURCES_MAIN} + ${QS_QRC_MAIN} + ) + + elseif(UNIX) + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + qt_add_executable(${CMAKE_PROJECT_NAME} MACOSX_BUNDLE MANUAL_FINALIZATION + main.cpp + ${QS_SOURCES_MAIN} + ${QS_MAC_RESOURCES} + ${QS_MAC_CONFIG} + ${QS_QRC_MAIN} + ) + + else() + qt_add_executable(${CMAKE_PROJECT_NAME} MANUAL_FINALIZATION + main.cpp + ${QS_SOURCES_MAIN} + ${QS_QRC_MAIN} + ) + + endif() + endif() + +else() # Qt version 5 + qt5_create_translation(QS_QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${QS_TS_FILES}) + + if(WIN32) + add_executable(${CMAKE_PROJECT_NAME} WIN32 + main.cpp + ${QS_SOURCES_MAIN} + ${QS_QRC_MAIN} + ) + elseif(UNIX) + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + add_executable(${CMAKE_PROJECT_NAME} MACOSX_BUNDLE + main.cpp + ${QS_SOURCES_MAIN} + ${QS_MAC_RESOURCES} + ${QS_MAC_CONFIG} + ${QS_QRC_MAIN} + ) + else() + add_executable(${CMAKE_PROJECT_NAME} + main.cpp + ${QS_SOURCES_MAIN} + ${QS_QRC_MAIN} + ) + endif() + endif() + +endif() + +# ******************** Microsoft Windows ******************** +if(WIN32) + message(STATUS "[QtScrcpy] Make for Microsoft Windows.") + + # 通过rc的方式的话,VERSION变量rc中获取不到,定义为宏方便rc中使用 + # Define macros for .rc file + add_compile_definitions( + VERSION_MAJOR=${VERSION_MAJOR} + VERSION_MINOR=${VERSION_MINOR} + VERSION_PATCH=${VERSION_PATCH} + VERSION_RC_STR=\\\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}\\\" + ) + + if(CMAKE_SIZEOF_VOID_P EQUAL 8) # Compiler is 64-bit + message(STATUS "[QtScrcpy] 64-bit compiler detected.") + + set(QS_LIB_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/lib/x64") + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + message(STATUS "[QtScrcpy] In debug mode.") + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/win/x64/debug" + ) + else() + message(STATUS "[QtScrcpy] In release mode.") + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/win/x64/release") + endif() + + set(QS_DLL_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/bin/x64") + + elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) # Compiler is 32-bit + message(STATUS "[QtScrcpy] 32-bit compiler detected.") + + set(QS_LIB_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/lib/x86") + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + message(STATUS "[QtScrcpy] In debug mode.") + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/win/x86/debug") + else() + message(STATUS "[QtScrcpy] In release mode.") + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/win/x86/release") + endif() + + set(QS_DLL_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/bin/x86") + endif() + + # 构建完成后复制DLL依赖库 + # Copy DLL dependencies after building + get_target_property(QS_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY) + file(GLOB QS_DLL_FILES "${QS_DLL_PATH}/*.dll") + foreach(QS_DLL_FILE ${QS_DLL_FILES}) + add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND + ${CMAKE_COMMAND} -E copy_if_different + "${QS_DLL_FILE}" "${QS_RUNTIME_OUTPUT_DIRECTORY}" + ) + endforeach() + + if(MSVC) + message(STATUS "[QtScrcpy] Microsoft Visual C++ is used.") + target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE ${QS_LIB_PATH}) + set(QS_EXTERNAL_LIBS_FFMPEG + avformat + avcodec + avutil + swscale + ) + # If MinGW is used, it is not appropriate to link static MSVC libs. + # Instead, we link DLLs directly + elseif(MINGW) + message(STATUS "[QtScrcpy] MinGW GCC is used.") + target_link_options(${CMAKE_PROJECT_NAME} PRIVATE + "-static" + ${QS_DLL_FILES} + "-Wl,--enable-stdcall-fixup" + ) + endif() + + set(RC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/res/QtScrcpy.rc") + +# ******************** Unix-like OSs ******************** +elseif(UNIX) + set(QS_LIB_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/lib") + + # ==================== macOS ==================== + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + message(STATUS "[QtScrcpy] Make for macOS.") + target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE ${QS_LIB_PATH}) + + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/mac/debug") + else() + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/mac/release") + endif() + + # Icon file stored in Contents/Resources + set(QS_MAC_ICON_NAME "QtScrcpy.icns") + set(QS_MAC_ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/res/${QS_MAC_ICON_NAME}") + + set_source_files_properties(${QS_MAC_RESOURCES} PROPERTIES + MACOSX_PACKAGE_LOCATION "MacOS" + ) + set_source_files_properties(${QS_MAC_CONFIG} PROPERTIES + MACOSX_PACKAGE_LOCATION "MacOS/config" + ) + + set(QS_EXTERNAL_LIBS_FFMPEG + avformat.58 + avcodec.58 + avutil.56 + swscale.5 + ) + + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES + # The base plist template file + MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/res/Info_Mac.plist" + # The elements to be overwritten + MACOSX_BUNDLE_ICON_FILE "${QS_MAC_ICON_NAME}" + MACOSX_BUNDLE_BUNDLE_VERSION "${STRING_VERSION}" + MACOSX_BUNDLE_SHORT_VERSION_STRING "${STRING_VERSION}" + MACOSX_BUNDLE_LONG_VERSION_STRING "${STRING_VERSION}" + + # Copy file(s) to Contents/Resources + RESOURCE "${QS_MAC_ICON_PATH}" + ) + + # =============== Non-Mac OSs (Linux, BSD, etc.) =============== + else() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/linux/debug") + else() + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/linux/release") + endif() + + find_package(Threads REQUIRED) + + message(STATUS "[QtScrcpy] Make for non-Mac Unix-like OS.") + set(INSTALLED_FFMPEG_FOUND false) + + find_package(PkgConfig) + if(PkgConfig_FOUND) + pkg_check_modules(FFmpeg libavformat>=58 libavcodec>=58 libavutil>=56 libswscale>=5) + if(FFmpeg_FOUND) + set(INSTALLED_FFMPEG_FOUND true) + message(STATUS "[QtScrcpy] Development files of FFmpeg were detected in your OS and will be used.") + target_link_options(${CMAKE_PROJECT_NAME} PRIVATE ${FFmpeg_LDFLAGS}) + target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE ${FFmpeg_CFLAGS}) + set(QS_EXTERNAL_LIBS_FFMPEG ${FFmpeg_LIBRARIES}) + endif() + endif() + + if(NOT INSTALLED_FFMPEG_FOUND) + message(STATUS "[QtScrcpy] Development files of FFmpeg were not detected in your OS. Files within third_party/ffmpeg/ will be used.") + target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE ${QS_LIB_PATH}) + set(QS_EXTERNAL_LIBS_FFMPEG + avformat + avcodec + avutil + swscale + Threads::Threads + ) + endif() + endif() +endif() + +target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + +set(QS_SUBDIRECTORIES_MAIN + adb + common + device + devicemanage + fontawesome + uibase + util +) +foreach(QS_SUBDIRECTORY_MAIN ${QS_SUBDIRECTORIES_MAIN}) + add_subdirectory(${QS_SUBDIRECTORY_MAIN}) +endforeach() + +target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC + adb + devicemanage + ) + +target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE + Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::Network + device + stream + ui + util + ) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(${CMAKE_PROJECT_NAME}) +endif() diff --git a/QtScrcpy/CMakeLists.txt b/QtScrcpy/CMakeLists.txt index 049cf62..b3165ad 100755 --- a/QtScrcpy/CMakeLists.txt +++ b/QtScrcpy/CMakeLists.txt @@ -1,309 +1,307 @@ -set(CMAKE_AUTOUIC ON) -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) +# For VS2019 and Xcode 12+ support. +cmake_minimum_required(VERSION 3.19 FATAL_ERROR) +# +# Global config +# + +# QC is "Qt CMake" + +# QC Custom config +set(QC_PROJECT_NAME "QtScrcpy") +# Read version numbers from file +file (STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/version QC_FILE_VERSION) +set(QC_PROJECT_VERSION ${QC_FILE_VERSION}) + +# Project declare +project(${QC_PROJECT_NAME} VERSION ${QC_PROJECT_VERSION} LANGUAGES CXX) +message(STATUS "[${PROJECT_NAME}] Project ${PROJECT_NAME} ${PROJECT_VERSION}") + +# QC define + +# check arch +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(QC_CPU_ARCH x64) +else() + set(QC_CPU_ARCH x86) +endif() +message(STATUS "[${PROJECT_NAME}] CPU_ARCH:${QC_CPU_ARCH}") + +# check build type +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(QC_BUILD_TYPE debug) +else() + set(QC_BUILD_TYPE release) +endif() +message(STATUS "[${PROJECT_NAME}] BUILD_TYPE:${QC_BUILD_TYPE}") + +# CMake set +set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) -find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Network LinguistTools REQUIRED) -find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network LinguistTools REQUIRED) - -if(MSVC) +# Compiler set +message(STATUS "[${PROJECT_NAME}] C++ compiler ID is: ${CMAKE_CXX_COMPILER_ID}") +if (MSVC) # FFmpeg cannot be compiled natively by MSVC version < 12.0 (2013) if(MSVC_VERSION LESS 1800) - message(FATAL_ERROR "[QtScrcpy] FATAL ERROR: MSVC version is older than 12.0 (2013).") + message(FATAL_ERROR "[${PROJECT_NAME}] ERROR: MSVC version is older than 12.0 (2013).") endif() - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8") + message(STATUS "[${PROJECT_NAME}] Set Warnings as error") + # warning level 3 and all warnings as errors + add_compile_options(/W3 /WX) + + # avoid warning C4819 + add_compile_options(-source-charset:utf-8) + + # ensure we use minimal "windows.h" lib without the crazy min max macros + add_compile_definitions(NOMINMAX WIN32_LEAN_AND_MEAN) + + # disable SAFESEH - to vs2019 avoid "LNK2026: module unsafe" + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D \"SAFESEH:NO\"") + add_link_options(/SAFESEH:NO) endif() - -# ==================== macOS ==================== -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - # QS_MAC_RESOURCES: esource file list stored in Contents/MacOS - file(GLOB QS_MAC_RESOURCES "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/lib/*.dylib") - list(APPEND QS_MAC_RESOURCES - "${PROJECT_SOURCE_DIR}/third_party/scrcpy-server" - "${PROJECT_SOURCE_DIR}/adb/mac/adb" - ) - - # QS_MAC_CONFIG: Config file stored in Contents/MacOS/config - set(QS_MAC_CONFIG "${PROJECT_SOURCE_DIR}/config/config.ini") +if (NOT MSVC) + message(STATUS "[${PROJECT_NAME}] Set warnings as error") + # lots of warnings and all warnings as errors + add_compile_options(-Wall -Wextra -pedantic -Werror) endif() -set(QS_TS_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/res/i18n/zh_CN.ts - ${CMAKE_CURRENT_SOURCE_DIR}/res/i18n/en_US.ts - ) -set_source_files_properties(${QS_TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/res/i18n") +# +# Qt +# -set(QS_SOURCES_MAIN +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Network REQUIRED) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network REQUIRED) + +# +# Sources +# + +# adb +set(QC_ADB_SOURCES + adb/adbprocess.h + adb/adbprocess.cpp +) + +# common +set(QC_COMMON_SOURCES + common/qscrcpyevent.h +) + +# device +set(QC_DEVICE_SOURCES + device/device.h + device/device.cpp + device/android/input.h + device/android/keycodes.h + device/controller/controller.h + device/controller/controller.cpp + device/controller/inputconvert/inputconvertbase.h + device/controller/inputconvert/inputconvertbase.cpp + device/controller/inputconvert/inputconvertnormal.h + device/controller/inputconvert/inputconvertnormal.cpp + device/controller/inputconvert/inputconvertgame.h + device/controller/inputconvert/inputconvertgame.cpp + device/controller/inputconvert/controlmsg.h + device/controller/inputconvert/controlmsg.cpp + device/controller/inputconvert/keymap/keymap.h + device/controller/inputconvert/keymap/keymap.cpp + device/controller/receiver/devicemsg.h + device/controller/receiver/devicemsg.cpp + device/controller/receiver/receiver.h + device/controller/receiver/receiver.cpp + device/decoder/avframeconvert.h + device/decoder/avframeconvert.cpp + device/decoder/decoder.h + device/decoder/decoder.cpp + device/decoder/fpscounter.h + device/decoder/fpscounter.cpp + device/decoder/videobuffer.h + device/decoder/videobuffer.cpp + device/filehandler/filehandler.h + device/filehandler/filehandler.cpp + device/recorder/recorder.h + device/recorder/recorder.cpp + device/render/qyuvopenglwidget.h + device/render/qyuvopenglwidget.cpp + device/server/server.h + device/server/server.cpp + device/server/tcpserver.h + device/server/tcpserver.cpp + device/server/videosocket.h + device/server/videosocket.cpp + device/stream/stream.h + device/stream/stream.cpp + device/ui/toolform.h + device/ui/toolform.cpp + device/ui/toolform.ui + device/ui/videoform.h + device/ui/videoform.cpp + device/ui/videoform.ui +) + +# devicemanage +set(QC_DEVICEMANAGE_SOURCES + devicemanage/devicemanage.h + devicemanage/devicemanage.cpp +) + +# fontawesome +set(QC_FONTAWESOME_SOURCES + fontawesome/iconhelper.h + fontawesome/iconhelper.cpp +) + +# uibase +set(QC_UIBASE_SOURCES + uibase/keepratiowidget.h + uibase/keepratiowidget.cpp + uibase/magneticwidget.h + uibase/magneticwidget.cpp +) + +# util +set(QC_UTIL_SOURCES + util/compat.h + util/config.h + util/config.cpp + util/bufferutil.h + util/bufferutil.cpp + util/mousetap/mousetap.h + util/mousetap/mousetap.cpp +) +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(QC_UTIL_SOURCES ${QC_UTIL_SOURCES} + util/mousetap/winmousetap.h + util/mousetap/winmousetap.cpp + ) +endif() +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(QC_UTIL_SOURCES ${QC_UTIL_SOURCES} + util/mousetap/xmousetap.h + util/mousetap/xmousetap.cpp + ) +endif() +if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + set(QC_UTIL_SOURCES ${QC_UTIL_SOURCES} + util/mousetap/cocoamousetap.h + util/mousetap/cocoamousetap.mm + ) +endif() + +# qrc +set(QC_QRC_SOURCES "res/res.qrc") + +# main +set(QC_MAIN_SOURCES + main.cpp dialog.cpp dialog.h dialog.ui - ${QS_TS_FILES} + ${QC_QRC_SOURCES} ) -set(QS_QRC_MAIN "${CMAKE_CURRENT_SOURCE_DIR}/res/res.qrc") - -if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) # Qt version 6 - qt_create_translation(QS_QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${QS_TS_FILES}) - - if(WIN32) - qt_add_executable(${CMAKE_PROJECT_NAME} WIN32 MANUAL_FINALIZATION - main.cpp - ${QS_SOURCES_MAIN} - ${QS_QRC_MAIN} - ) - - elseif(UNIX) - if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - qt_add_executable(${CMAKE_PROJECT_NAME} MACOSX_BUNDLE MANUAL_FINALIZATION - main.cpp - ${QS_SOURCES_MAIN} - ${QS_MAC_RESOURCES} - ${QS_MAC_CONFIG} - ${QS_QRC_MAIN} - ) - - else() - qt_add_executable(${CMAKE_PROJECT_NAME} MANUAL_FINALIZATION - main.cpp - ${QS_SOURCES_MAIN} - ${QS_QRC_MAIN} - ) - - endif() - endif() - -else() # Qt version 5 - qt5_create_translation(QS_QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${QS_TS_FILES}) - - if(WIN32) - add_executable(${CMAKE_PROJECT_NAME} WIN32 - main.cpp - ${QS_SOURCES_MAIN} - ${QS_QRC_MAIN} - ) - elseif(UNIX) - if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - add_executable(${CMAKE_PROJECT_NAME} MACOSX_BUNDLE - main.cpp - ${QS_SOURCES_MAIN} - ${QS_MAC_RESOURCES} - ${QS_MAC_CONFIG} - ${QS_QRC_MAIN} - ) - else() - add_executable(${CMAKE_PROJECT_NAME} - main.cpp - ${QS_SOURCES_MAIN} - ${QS_QRC_MAIN} - ) - endif() - endif() - -endif() - -# ******************** Microsoft Windows ******************** -if(WIN32) - message(STATUS "[QtScrcpy] Make for Microsoft Windows.") - - # 通过rc的方式的话,VERSION变量rc中获取不到,定义为宏方便rc中使用 - # Define macros for .rc file +# plantform file +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + # Define VERSION macros for .rc file add_compile_definitions( - VERSION_MAJOR=${VERSION_MAJOR} - VERSION_MINOR=${VERSION_MINOR} - VERSION_PATCH=${VERSION_PATCH} - VERSION_RC_STR=\\\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}\\\" + VERSION_MAJOR=${PROJECT_VERSION_MAJOR} + VERSION_MINOR=${PROJECT_VERSION_MINOR} + VERSION_PATCH=${PROJECT_VERSION_PATCH} + VERSION_RC_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" + ) + set(QC_PLANTFORM_SOURCES + "${CMAKE_CURRENT_SOURCE_DIR}/res/${PROJECT_NAME}.rc" ) - - if(CMAKE_SIZEOF_VOID_P EQUAL 8) # Compiler is 64-bit - message(STATUS "[QtScrcpy] 64-bit compiler detected.") - - set(QS_LIB_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/lib/x64") - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - message(STATUS "[QtScrcpy] In debug mode.") - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/win/x64/debug" - ) - else() - message(STATUS "[QtScrcpy] In release mode.") - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/win/x64/release") - endif() - - set(QS_DLL_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/bin/x64") - - elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) # Compiler is 32-bit - message(STATUS "[QtScrcpy] 32-bit compiler detected.") - - set(QS_LIB_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/lib/x86") - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - message(STATUS "[QtScrcpy] In debug mode.") - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/win/x86/debug") - else() - message(STATUS "[QtScrcpy] In release mode.") - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/win/x86/release") - endif() - - set(QS_DLL_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/bin/x86") - endif() - - # 构建完成后复制DLL依赖库 - # Copy DLL dependencies after building - get_target_property(QS_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY) - file(GLOB QS_DLL_FILES "${QS_DLL_PATH}/*.dll") - foreach(QS_DLL_FILE ${QS_DLL_FILES}) - add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND - ${CMAKE_COMMAND} -E copy_if_different - "${QS_DLL_FILE}" "${QS_RUNTIME_OUTPUT_DIRECTORY}" - ) - endforeach() - - if(MSVC) - message(STATUS "[QtScrcpy] Microsoft Visual C++ is used.") - target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE ${QS_LIB_PATH}) - set(QS_EXTERNAL_LIBS_FFMPEG - avformat - avcodec - avutil - swscale - ) - # If MinGW is used, it is not appropriate to link static MSVC libs. - # Instead, we link DLLs directly - elseif(MINGW) - message(STATUS "[QtScrcpy] MinGW GCC is used.") - target_link_options(${CMAKE_PROJECT_NAME} PRIVATE - "-static" - ${QS_DLL_FILES} - "-Wl,--enable-stdcall-fixup" - ) - endif() - - set(RC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/res/QtScrcpy.rc") - -# ******************** Unix-like OSs ******************** -elseif(UNIX) - set(QS_LIB_PATH "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/lib") - - # ==================== macOS ==================== - if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - message(STATUS "[QtScrcpy] Make for macOS.") - target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE ${QS_LIB_PATH}) - - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/mac/debug") - else() - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/mac/release") - endif() - - # Icon file stored in Contents/Resources - set(QS_MAC_ICON_NAME "QtScrcpy.icns") - set(QS_MAC_ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/res/${QS_MAC_ICON_NAME}") - - set_source_files_properties(${QS_MAC_RESOURCES} PROPERTIES - MACOSX_PACKAGE_LOCATION "MacOS" - ) - set_source_files_properties(${QS_MAC_CONFIG} PROPERTIES - MACOSX_PACKAGE_LOCATION "MacOS/config" - ) - - set(QS_EXTERNAL_LIBS_FFMPEG - avformat.58 - avcodec.58 - avutil.56 - swscale.5 - ) - - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES - # The base plist template file - MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/res/Info_Mac.plist" - # The elements to be overwritten - MACOSX_BUNDLE_ICON_FILE "${QS_MAC_ICON_NAME}" - MACOSX_BUNDLE_BUNDLE_VERSION "${STRING_VERSION}" - MACOSX_BUNDLE_SHORT_VERSION_STRING "${STRING_VERSION}" - MACOSX_BUNDLE_LONG_VERSION_STRING "${STRING_VERSION}" - - # Copy file(s) to Contents/Resources - RESOURCE "${QS_MAC_ICON_PATH}" - ) - - # =============== Non-Mac OSs (Linux, BSD, etc.) =============== - else() - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/linux/debug") - else() - set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/output/linux/release") - endif() - - find_package(Threads REQUIRED) - - message(STATUS "[QtScrcpy] Make for non-Mac Unix-like OS.") - set(INSTALLED_FFMPEG_FOUND false) - - find_package(PkgConfig) - if(PkgConfig_FOUND) - pkg_check_modules(FFmpeg libavformat>=58 libavcodec>=58 libavutil>=56 libswscale>=5) - if(FFmpeg_FOUND) - set(INSTALLED_FFMPEG_FOUND true) - message(STATUS "[QtScrcpy] Development files of FFmpeg were detected in your OS and will be used.") - target_link_options(${CMAKE_PROJECT_NAME} PRIVATE ${FFmpeg_LDFLAGS}) - target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE ${FFmpeg_CFLAGS}) - set(QS_EXTERNAL_LIBS_FFMPEG ${FFmpeg_LIBRARIES}) - endif() - endif() - - if(NOT INSTALLED_FFMPEG_FOUND) - message(STATUS "[QtScrcpy] Development files of FFmpeg were not detected in your OS. Files within third_party/ffmpeg/ will be used.") - target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE ${QS_LIB_PATH}) - set(QS_EXTERNAL_LIBS_FFMPEG - avformat - avcodec - avutil - swscale - Threads::Threads - ) - endif() - endif() endif() -target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) - -set(QS_SUBDIRECTORIES_MAIN - adb - common - device - devicemanage - fontawesome - uibase - util +# all sources +set(QC_PROJECT_SOURCES + ${QC_ADB_SOURCES} + ${QC_COMMON_SOURCES} + ${QC_DEVICE_SOURCES} + ${QC_DEVICEMANAGE_SOURCES} + ${QC_FONTAWESOME_SOURCES} + ${QC_UIBASE_SOURCES} + ${QC_UTIL_SOURCES} + ${QC_MAIN_SOURCES} + ${QC_PLANTFORM_SOURCES} ) -foreach(QS_SUBDIRECTORY_MAIN ${QS_SUBDIRECTORIES_MAIN}) - add_subdirectory(${QS_SUBDIRECTORY_MAIN}) -endforeach() -target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC - adb - devicemanage - ) +add_executable(${PROJECT_NAME} ${QC_PROJECT_SOURCES}) -target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE +# +# Internal include path (todo: remove this, use absolute path include) +# + +target_include_directories(${PROJECT_NAME} PRIVATE adb) +target_include_directories(${PROJECT_NAME} PRIVATE common) +target_include_directories(${PROJECT_NAME} PRIVATE device) +target_include_directories(${PROJECT_NAME} PRIVATE device/filehandler) +target_include_directories(${PROJECT_NAME} PRIVATE device/android) +target_include_directories(${PROJECT_NAME} PRIVATE device/decoder) +target_include_directories(${PROJECT_NAME} PRIVATE device/controller) +target_include_directories(${PROJECT_NAME} PRIVATE device/controller/receiver) +target_include_directories(${PROJECT_NAME} PRIVATE device/controller/inputconvert) +target_include_directories(${PROJECT_NAME} PRIVATE device/controller/inputconvert/keymap) +target_include_directories(${PROJECT_NAME} PRIVATE device/server) +target_include_directories(${PROJECT_NAME} PRIVATE device/stream) +target_include_directories(${PROJECT_NAME} PRIVATE device/render) +target_include_directories(${PROJECT_NAME} PRIVATE device/ui) +target_include_directories(${PROJECT_NAME} PRIVATE device/recorder) +target_include_directories(${PROJECT_NAME} PRIVATE devicemanage) +target_include_directories(${PROJECT_NAME} PRIVATE fontawesome) +target_include_directories(${PROJECT_NAME} PRIVATE util) +target_include_directories(${PROJECT_NAME} PRIVATE uibase) + +# +# common deps +# + +# Qt +target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network - device - stream - ui - util - ) +) -if(QT_VERSION_MAJOR EQUAL 6) - qt_finalize_executable(${CMAKE_PROJECT_NAME}) -endif() +# output dir +set_target_properties(${PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../output/${QC_CPU_ARCH}/${QC_BUILD_TYPE}" +) + +# +# plantform deps +# + +# windows +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + # ffmpeg + # include + target_include_directories(${PROJECT_NAME} PRIVATE ../third_party/ffmpeg/include) + # link + set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../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}/../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}/swresample-3.dll" "${FFMPEG_BIN_OUTPUT_PATH}" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/swscale-5.dll" "${FFMPEG_BIN_OUTPUT_PATH}" + ) +endif() \ No newline at end of file diff --git a/QtScrcpy/adb/CMakeLists.txt b/QtScrcpy/adb/CMakeLists.txt deleted file mode 100755 index 3644ade..0000000 --- a/QtScrcpy/adb/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -set(QS_SOURCES_ADB - adbprocess.h - adbprocess.cpp -) - -add_library(adb ${QS_SOURCES_ADB}) -target_include_directories(adb PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(adb PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - util - ) diff --git a/QtScrcpy/common/CMakeLists.txt b/QtScrcpy/common/CMakeLists.txt deleted file mode 100755 index cd2b0c6..0000000 --- a/QtScrcpy/common/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -set(QS_SOURCES_COMMON - qscrcpyevent.h -) - -add_library(common INTERFACE ${QS_SOURCES_COMMON}) -target_include_directories(common INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/QtScrcpy/device/CMakeLists.txt b/QtScrcpy/device/CMakeLists.txt deleted file mode 100755 index 6e8b837..0000000 --- a/QtScrcpy/device/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -set(QS_SUBDIRECTORIES_DEVICE - android - controller - decoder - filehandler - recorder - render - server - stream - ui -) - -set(QS_SOURCES_DEVICE - device.h - device.cpp -) - -add_library(device ${QS_SOURCES_DEVICE}) - -target_include_directories(device PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) - -foreach(QS_SUBDIRECTORY_DEVICE ${QS_SUBDIRECTORIES_DEVICE}) - add_subdirectory (${QS_SUBDIRECTORY_DEVICE}) -endforeach() - -target_link_libraries(device INTERFACE inputconvert) -target_link_libraries(device PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - # device (self) - controller - decoder - filehandler - recorder - server - stream - ui - util - mousetap - ) - diff --git a/QtScrcpy/device/android/CMakeLists.txt b/QtScrcpy/device/android/CMakeLists.txt deleted file mode 100755 index 432d749..0000000 --- a/QtScrcpy/device/android/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -set(QS_SOURCES_DEVICE_ANDROID - input.h - keycodes.h -) - -add_library(android INTERFACE ${QS_SOURCES_DEVICE_ANDROID}) -target_include_directories(android INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/QtScrcpy/device/controller/CMakeLists.txt b/QtScrcpy/device/controller/CMakeLists.txt deleted file mode 100755 index cf34254..0000000 --- a/QtScrcpy/device/controller/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -SET(QS_SUBDIRECTORIES_DEVICE_CONTROLLER - inputconvert - receiver -) - -SET(QS_SOURCES_DEVICE_CONTROLLER - controller.h - controller.cpp -) - -add_library(controller ${QS_SOURCES_DEVICE_CONTROLLER}) - -target_include_directories(controller PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) - -foreach(QS_SUBDIRECTORY_DEVICE_CONTROLLER ${QS_SUBDIRECTORIES_DEVICE_CONTROLLER}) - add_subdirectory (${QS_SUBDIRECTORY_DEVICE_CONTROLLER}) -endforeach() - -target_link_libraries(controller PUBLIC - inputconvert - ) -target_link_libraries(controller PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - receiver - server - ) diff --git a/QtScrcpy/device/controller/inputconvert/CMakeLists.txt b/QtScrcpy/device/controller/inputconvert/CMakeLists.txt deleted file mode 100755 index 2c5cd44..0000000 --- a/QtScrcpy/device/controller/inputconvert/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -SET(QS_SUBDIRECTORIES_DEVICE_CONTROLLER_INPUTCONVERT - keymap -) - -set(QS_SOURCES_DEVICE_CONTROLLER_INPUTCONVERT - controlmsg.h - controlmsg.cpp - inputconvertbase.h - inputconvertbase.cpp - inputconvertgame.h - inputconvertgame.cpp - inputconvertnormal.h - inputconvertnormal.cpp -) - -add_library(inputconvert ${QS_SOURCES_DEVICE_CONTROLLER_INPUTCONVERT}) - -target_include_directories(inputconvert PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) - -foreach(QS_SUBDIRECTORY_DEVICE_CONTROLLER_INPUTCONVERT ${QS_SUBDIRECTORIES_DEVICE_CONTROLLER_INPUTCONVERT}) - add_subdirectory (${QS_SUBDIRECTORY_DEVICE_CONTROLLER_INPUTCONVERT}) -endforeach() - -target_link_libraries(inputconvert PUBLIC - common - # controller - android - ) -target_link_libraries(inputconvert INTERFACE - # controller - # inputconvert (self) - keymap - ) -target_link_libraries(inputconvert PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - - controller - util - ) diff --git a/QtScrcpy/device/controller/inputconvert/keymap/CMakeLists.txt b/QtScrcpy/device/controller/inputconvert/keymap/CMakeLists.txt deleted file mode 100755 index a74b052..0000000 --- a/QtScrcpy/device/controller/inputconvert/keymap/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -set(QS_SOURCES_DEVICE_CONTROLLER_INPUTCONVERT_KEYMAP - keymap.h - keymap.cpp -) - -add_library(keymap ${QS_SOURCES_DEVICE_CONTROLLER_INPUTCONVERT_KEYMAP}) -target_include_directories(keymap PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(keymap PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) diff --git a/QtScrcpy/device/controller/receiver/CMakeLists.txt b/QtScrcpy/device/controller/receiver/CMakeLists.txt deleted file mode 100755 index ee6ced2..0000000 --- a/QtScrcpy/device/controller/receiver/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -SET(QS_SOURCES_DEVICE_CONTROLLER_RECEIVER - devicemsg.h - devicemsg.cpp - receiver.h - receiver.cpp - ) - -add_library(receiver ${QS_SOURCES_DEVICE_CONTROLLER_RECEIVER}) -target_include_directories(receiver PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(receiver PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - Qt${QT_VERSION_MAJOR}::Network - util - ) diff --git a/QtScrcpy/device/decoder/CMakeLists.txt b/QtScrcpy/device/decoder/CMakeLists.txt deleted file mode 100755 index b2931a2..0000000 --- a/QtScrcpy/device/decoder/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -set(QS_SOURCES_DEVICE_DECODER - avframeconvert.h - avframeconvert.cpp - decoder.h - decoder.cpp - fpscounter.h - fpscounter.cpp - videobuffer.h - videobuffer.cpp -) - -add_library(decoder ${QS_SOURCES_DEVICE_DECODER}) -target_include_directories(decoder PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR} - "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/include" - ) -target_link_libraries(decoder PUBLIC ${QS_EXTERNAL_LIBS_FFMPEG}) -target_link_libraries(decoder PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - util - ) diff --git a/QtScrcpy/device/filehandler/CMakeLists.txt b/QtScrcpy/device/filehandler/CMakeLists.txt deleted file mode 100755 index 17de9e2..0000000 --- a/QtScrcpy/device/filehandler/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -set(QS_SOURCES_DEVICE_FILEHANDLER - filehandler.h - filehandler.cpp -) - -add_library(filehandler ${QS_SOURCES_DEVICE_FILEHANDLER}) -target_include_directories(filehandler PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(filehandler PUBLIC adb) -target_link_libraries(filehandler PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) diff --git a/QtScrcpy/device/recorder/CMakeLists.txt b/QtScrcpy/device/recorder/CMakeLists.txt deleted file mode 100755 index 12144db..0000000 --- a/QtScrcpy/device/recorder/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -set(QS_SOURCES_DEVICE_RECORDER - recorder.h - recorder.cpp -) - -add_library(recorder ${QS_SOURCES_DEVICE_RECORDER}) -target_include_directories(recorder PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR} - "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/include" - ) -target_link_libraries(recorder PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - util - ) diff --git a/QtScrcpy/device/render/CMakeLists.txt b/QtScrcpy/device/render/CMakeLists.txt deleted file mode 100755 index ee3a140..0000000 --- a/QtScrcpy/device/render/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -set(QS_SOURCES_DEVICE_RENDER - qyuvopenglwidget.h - qyuvopenglwidget.cpp -) - -add_library(render ${QS_SOURCES_DEVICE_RENDER}) -target_include_directories(render PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(render PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) diff --git a/QtScrcpy/device/server/CMakeLists.txt b/QtScrcpy/device/server/CMakeLists.txt deleted file mode 100755 index eb7fe84..0000000 --- a/QtScrcpy/device/server/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -set(QS_SOURCES_DEVICE_SERVER - server.h - server.cpp - tcpserver.h - tcpserver.cpp - videosocket.h - videosocket.cpp -) - -add_library(server ${QS_SOURCES_DEVICE_SERVER}) -target_include_directories(server PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(server PUBLIC - Qt${QT_VERSION_MAJOR}::Network - adb - ) -target_link_libraries(server PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - common - util - ) diff --git a/QtScrcpy/device/stream/CMakeLists.txt b/QtScrcpy/device/stream/CMakeLists.txt deleted file mode 100755 index 469d2d3..0000000 --- a/QtScrcpy/device/stream/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -set(QS_SOURCES_DEVICE_STREAM - stream.h - stream.cpp -) - -add_library(stream ${QS_SOURCES_DEVICE_STREAM}) -target_include_directories(stream PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR} - "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/include" - ) - -target_link_libraries(stream PUBLIC ${QS_EXTERNAL_LIBS_FFMPEG}) -target_link_libraries(stream PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - #controller - decoder - recorder - server - util - ) diff --git a/QtScrcpy/device/ui/CMakeLists.txt b/QtScrcpy/device/ui/CMakeLists.txt deleted file mode 100755 index f8f6325..0000000 --- a/QtScrcpy/device/ui/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -set(QS_SOURCES_DEVICE_UI - toolform.h - toolform.cpp - toolform.ui - videoform.h - videoform.cpp - videoform.ui -) - -add_library(ui ${QS_SOURCES_DEVICE_UI}) -target_include_directories(ui PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_include_directories(ui PRIVATE "${PROJECT_SOURCE_DIR}/third_party/ffmpeg/include") -target_link_libraries(ui PUBLIC - device - uibase - ) -target_link_libraries(ui PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - controller - render - fontawesome - util - ) diff --git a/QtScrcpy/devicemanage/CMakeLists.txt b/QtScrcpy/devicemanage/CMakeLists.txt deleted file mode 100755 index 8ce0ab7..0000000 --- a/QtScrcpy/devicemanage/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -set(QS_SOURCES_DEVICEMANAGE - devicemanage.h - devicemanage.cpp -) - -add_library(devicemanage ${QS_SOURCES_DEVICEMANAGE}) -target_include_directories(devicemanage PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(devicemanage PUBLIC device) -target_link_libraries(devicemanage PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - server - ui - ) diff --git a/QtScrcpy/fontawesome/CMakeLists.txt b/QtScrcpy/fontawesome/CMakeLists.txt deleted file mode 100755 index ead0947..0000000 --- a/QtScrcpy/fontawesome/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -set(QS_SOURCES_FONTAWESOME - iconhelper.h - iconhelper.cpp -) - -add_library(fontawesome ${QS_SOURCES_FONTAWESOME}) -target_include_directories(fontawesome PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(fontawesome PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) diff --git a/QtScrcpy/uibase/CMakeLists.txt b/QtScrcpy/uibase/CMakeLists.txt deleted file mode 100755 index 861883a..0000000 --- a/QtScrcpy/uibase/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -set(QS_SOURCES_UIBASE - keepratiowidget.h - keepratiowidget.cpp - magneticwidget.h - magneticwidget.cpp -) - -add_library(uibase ${QS_SOURCES_UIBASE}) -target_include_directories(uibase PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(uibase PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) diff --git a/QtScrcpy/util/CMakeLists.txt b/QtScrcpy/util/CMakeLists.txt deleted file mode 100755 index 2d92d13..0000000 --- a/QtScrcpy/util/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -set(QS_SUBDIRECTORIES_UTIL - mousetap -) - -set(QS_SOURCES_UTIL - bufferutil.h - bufferutil.cpp - compat.h - config.h - config.cpp -) - -add_library(util ${QS_SOURCES_UTIL}) - -target_include_directories(util PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) - -foreach(QS_SUBDIRECTORY_UTIL ${QS_SUBDIRECTORIES_UTIL}) - add_subdirectory (${QS_SUBDIRECTORY_UTIL}) -endforeach() - -target_link_libraries(util PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) diff --git a/QtScrcpy/util/mousetap/CMakeLists.txt b/QtScrcpy/util/mousetap/CMakeLists.txt deleted file mode 100755 index 846851b..0000000 --- a/QtScrcpy/util/mousetap/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -set(QS_SOURCES_UTIL_MOUSETAP - mousetap.h - mousetap.cpp -) - -# Microsoft Windows -if(WIN32) - - list(APPEND QS_SOURCES_UTIL_MOUSETAP - winmousetap.h - winmousetap.cpp - ) - set(QS_EXTERNAL_LIBS_UTIL_MOUSETAP User32) - -elseif(UNIX) -# macOS - if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - - find_library(APPKIT AppKit REQUIRED) - set(QS_EXTERNAL_LIBS_UTIL_MOUSETAP ${APPKIT}) - - list(APPEND QS_SOURCES_UTIL_MOUSETAP - cocoamousetap.h - cocoamousetap.mm - ) - - target_compile_options(mousetap "-mmacosx-version-min=10.6") - - # Linux, BSD, etc. - else() - - find_package(QT NAMES Qt6 Qt5 COMPONENTS X11Extras REQUIRED) - find_package(Qt${QT_VERSION_MAJOR} COMPONENTS X11Extras REQUIRED) - set(QS_EXTERNAL_LIBS_UTIL_MOUSETAP - Qt${QT_VERSION_MAJOR}::X11Extras - xcb - ) - - list(APPEND QS_SOURCES_UTIL_MOUSETAP - xmousetap.h - xmousetap.cpp - ) - - endif() -endif() - -add_library(mousetap ${QS_SOURCES_UTIL_MOUSETAP}) -target_link_libraries(mousetap PRIVATE - Qt${QT_VERSION_MAJOR}::Widgets - ${QS_EXTERNAL_LIBS_UTIL_MOUSETAP})