diff --git a/.gitignore b/.gitignore
index 93a2a8c..5a6f350 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,4 +12,5 @@
/build/
build-*
*.DS_Store
-userdata.ini
\ No newline at end of file
+userdata.ini
+Info_Mac.plist
\ No newline at end of file
diff --git a/QtScrcpy/CMakeLists.txt b/QtScrcpy/CMakeLists.txt
index 94005a3..8d1fff6 100755
--- a/QtScrcpy/CMakeLists.txt
+++ b/QtScrcpy/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required(VERSION 3.19 FATAL_ERROR)
# QC Custom config
set(QC_PROJECT_NAME "QtScrcpy")
# Read version numbers from file
-file (STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/version QC_FILE_VERSION)
+file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/version QC_FILE_VERSION)
set(QC_PROJECT_VERSION ${QC_FILE_VERSION})
# Project declare
@@ -27,19 +27,17 @@ else()
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_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 11)
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
message(STATUS "[${PROJECT_NAME}] C++ compiler ID is: ${CMAKE_CXX_COMPILER_ID}")
if (MSVC)
@@ -54,6 +52,7 @@ if (MSVC)
# avoid warning C4819
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
add_compile_definitions(NOMINMAX WIN32_LEAN_AND_MEAN)
@@ -66,6 +65,9 @@ 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)
+
+ # disable some warning
+ add_compile_options(-Wno-nested-anon-types -Wno-c++17-extensions)
endif()
#
@@ -236,7 +238,15 @@ set(QC_PROJECT_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)
@@ -274,7 +284,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE
# output dir
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}"
)
#
@@ -305,4 +315,50 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
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()
+
+# 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()
\ No newline at end of file
diff --git a/QtScrcpy/res/Info_Mac.plist b/QtScrcpy/res/Info_Mac.plist.in
similarity index 90%
rename from QtScrcpy/res/Info_Mac.plist
rename to QtScrcpy/res/Info_Mac.plist.in
index 3e25f20..007a4b7 100644
--- a/QtScrcpy/res/Info_Mac.plist
+++ b/QtScrcpy/res/Info_Mac.plist.in
@@ -5,11 +5,11 @@
CFBundleDevelopmentRegion
zh-Hans
CFBundleExecutable
- @EXECUTABLE@
+ QtScrcpy
CFBundleGetInfoString
Created by rankun
CFBundleIconFile
- @ICON@
+ QtScrcpy
CFBundleIdentifier
rankun.QtScrcpy
CFBundleInfoDictionaryVersion
@@ -19,13 +19,13 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 1.0.0
+ ${BUNDLE_VERSION}
CFBundleSupportedPlatforms
MacOSX
CFBundleVersion
- 1.0.0
+ ${BUNDLE_VERSION}
LSMinimumSystemVersion
10.10
NSAppleEventsUsageDescription
diff --git a/QtScrcpy/version b/QtScrcpy/version
index dc1e644..77d6f4c 100644
--- a/QtScrcpy/version
+++ b/QtScrcpy/version
@@ -1 +1 @@
-1.6.0
+0.0.0