mirror of
https://github.com/barry-ran/QtScrcpy.git
synced 2025-08-03 14:18:45 +00:00
feat: mac
This commit is contained in:
parent
6ca6dec70b
commit
e39bdef01b
4 changed files with 75 additions and 18 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -13,3 +13,4 @@
|
||||||
build-*
|
build-*
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
userdata.ini
|
userdata.ini
|
||||||
|
Info_Mac.plist
|
|
@ -27,19 +27,17 @@ else()
|
||||||
endif()
|
endif()
|
||||||
message(STATUS "[${PROJECT_NAME}] CPU_ARCH:${QC_CPU_ARCH}")
|
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
|
# CMake set
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
#set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
# default debug
|
||||||
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
|
set(CMAKE_BUILD_TYPE Debug)
|
||||||
|
endif()
|
||||||
|
message(STATUS "[${PROJECT_NAME}] BUILD_TYPE:${CMAKE_BUILD_TYPE}")
|
||||||
|
|
||||||
# Compiler set
|
# Compiler set
|
||||||
message(STATUS "[${PROJECT_NAME}] C++ compiler ID is: ${CMAKE_CXX_COMPILER_ID}")
|
message(STATUS "[${PROJECT_NAME}] C++ compiler ID is: ${CMAKE_CXX_COMPILER_ID}")
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
|
@ -54,6 +52,7 @@ if (MSVC)
|
||||||
|
|
||||||
# avoid warning C4819
|
# avoid warning C4819
|
||||||
add_compile_options(-source-charset:utf-8)
|
add_compile_options(-source-charset:utf-8)
|
||||||
|
#add_compile_options(/utf-8)
|
||||||
|
|
||||||
# ensure we use minimal "windows.h" lib without the crazy min max macros
|
# ensure we use minimal "windows.h" lib without the crazy min max macros
|
||||||
add_compile_definitions(NOMINMAX WIN32_LEAN_AND_MEAN)
|
add_compile_definitions(NOMINMAX WIN32_LEAN_AND_MEAN)
|
||||||
|
@ -66,6 +65,9 @@ if (NOT MSVC)
|
||||||
message(STATUS "[${PROJECT_NAME}] Set warnings as error")
|
message(STATUS "[${PROJECT_NAME}] Set warnings as error")
|
||||||
# lots of warnings and all warnings as errors
|
# lots of warnings and all warnings as errors
|
||||||
add_compile_options(-Wall -Wextra -pedantic -Werror)
|
add_compile_options(-Wall -Wextra -pedantic -Werror)
|
||||||
|
|
||||||
|
# disable some warning
|
||||||
|
add_compile_options(-Wno-nested-anon-types -Wno-c++17-extensions)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -236,7 +238,15 @@ set(QC_PROJECT_SOURCES
|
||||||
${QC_PLANTFORM_SOURCES}
|
${QC_PLANTFORM_SOURCES}
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${QC_PROJECT_SOURCES})
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
set(QC_RUNTIME_TYPE MACOSX_BUNDLE)
|
||||||
|
endif()
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||||
|
set(QC_RUNTIME_TYPE WIN32)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
add_executable(${PROJECT_NAME} ${QC_RUNTIME_TYPE} ${QC_PROJECT_SOURCES})
|
||||||
|
|
||||||
#
|
#
|
||||||
# Internal include path (todo: remove this, use absolute path include)
|
# Internal include path (todo: remove this, use absolute path include)
|
||||||
|
@ -274,7 +284,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||||
|
|
||||||
# output dir
|
# output dir
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../output/${QC_CPU_ARCH}/${QC_BUILD_TYPE}"
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../output/${QC_CPU_ARCH}/${CMAKE_BUILD_TYPE}"
|
||||||
)
|
)
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -306,3 +316,49 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||||
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}/swscale-5.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# MacOS
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
# 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")
|
||||||
|
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}/../third_party/ffmpeg/lib/libavcodec.58.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../third_party/ffmpeg/lib/libavformat.58.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../third_party/ffmpeg/lib/libavutil.56.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../third_party/ffmpeg/lib/libswresample.3.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../third_party/ffmpeg/lib/libswscale.5.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../third_party/scrcpy-server" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../third_party/adb/mac/adb" "${MACOS_BUNDLE_PATH}/MacOS"
|
||||||
|
# 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"
|
||||||
|
)
|
||||||
|
|
||||||
|
# plist
|
||||||
|
set(INFO_PLIST_TEMPLATE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/res/Info_Mac.plist.in")
|
||||||
|
set(INFO_PLIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/res/Info_Mac.plist")
|
||||||
|
file(READ "${INFO_PLIST_TEMPLATE_FILE}" plist_contents)
|
||||||
|
string(REPLACE "\${BUNDLE_VERSION}" "${PROJECT_VERSION}" plist_contents ${plist_contents})
|
||||||
|
file(WRITE ${INFO_PLIST_FILE} ${plist_contents})
|
||||||
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
|
MACOSX_BUNDLE_INFO_PLIST "${INFO_PLIST_FILE}"
|
||||||
|
#RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/res/${PROJECT_NAME}.icns"
|
||||||
|
)
|
||||||
|
|
||||||
|
# mac framework
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE "-framework AppKit")
|
||||||
|
endif()
|
|
@ -5,11 +5,11 @@
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>zh-Hans</string>
|
<string>zh-Hans</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>@EXECUTABLE@</string>
|
<string>QtScrcpy</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>Created by rankun</string>
|
<string>Created by rankun</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>@ICON@</string>
|
<string>QtScrcpy</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>rankun.QtScrcpy</string>
|
<string>rankun.QtScrcpy</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
@ -19,13 +19,13 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.0.0</string>
|
<string>${BUNDLE_VERSION}</string>
|
||||||
<key>CFBundleSupportedPlatforms</key>
|
<key>CFBundleSupportedPlatforms</key>
|
||||||
<array>
|
<array>
|
||||||
<string>MacOSX</string>
|
<string>MacOSX</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.0.0</string>
|
<string>${BUNDLE_VERSION}</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>10.10</string>
|
<string>10.10</string>
|
||||||
<key>NSAppleEventsUsageDescription</key>
|
<key>NSAppleEventsUsageDescription</key>
|
|
@ -1 +1 @@
|
||||||
1.6.0
|
0.0.0
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue