diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index ba7a815..1fc8b8d 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -44,7 +44,7 @@ jobs: ENV_QT_PATH: ${{ env.qt-install-path }} run: | python ci/generate-version.py - ci/mac/build_for_mac.sh release + ci/mac/build_for_mac.sh RelWithDebInfo # 获取ref最后一个/后的内容 - name: Get the version shell: bash diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index bfddbb2..027ae56 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -76,7 +76,7 @@ jobs: ENV_QT_PATH: ${{ env.qt-install-path }} run: | call python ci\generate-version.py - call "ci\win\build_for_win.bat" release ${{ matrix.msvc-arch }} + call "ci\win\build_for_win.bat" RelWithDebInfo ${{ matrix.msvc-arch }} # 获取ref最后一个/后的内容 - name: Get the version shell: bash diff --git a/QtScrcpy/CMakeLists.txt b/QtScrcpy/CMakeLists.txt index 19eb080..04d162a 100755 --- a/QtScrcpy/CMakeLists.txt +++ b/QtScrcpy/CMakeLists.txt @@ -33,9 +33,9 @@ message(STATUS "[${PROJECT_NAME}] CPU_ARCH:${QC_CPU_ARCH}") set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) -# default debug +# default RelWithDebInfo if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Debug) + set(CMAKE_BUILD_TYPE RelWithDebInfo) endif() message(STATUS "[${PROJECT_NAME}] BUILD_TYPE:${CMAKE_BUILD_TYPE}") @@ -297,8 +297,14 @@ target_link_libraries(${PROJECT_NAME} PRIVATE ) # output dir +if(MSVC) + # msvc不需要指定CMAKE_BUILD_TYPE,会自动生成到CMAKE_ARCHIVE_OUTPUT_DIRECTORY/[Debug/Release/..] + set(QC_OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../output/${QC_CPU_ARCH}") +else() + set(QC_OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../output/${QC_CPU_ARCH}/${CMAKE_BUILD_TYPE}") +endif() set_target_properties(${PROJECT_NAME} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../output/${QC_CPU_ARCH}/${CMAKE_BUILD_TYPE}" + RUNTIME_OUTPUT_DIRECTORY "${QC_OUTPUT_DIR}" ) # @@ -322,6 +328,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows") # 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) + # msvc output dir need append build type + set(FFMPEG_BIN_OUTPUT_PATH ${FFMPEG_BIN_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}) 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}" diff --git a/ci/mac/build_for_mac.sh b/ci/mac/build_for_mac.sh index 529bdf5..a3e6dd0 100755 --- a/ci/mac/build_for_mac.sh +++ b/ci/mac/build_for_mac.sh @@ -21,17 +21,17 @@ old_cd=$(pwd) cd $(dirname "$0") # 启动参数声明 -build_mode=debug +build_mode=RelWithDebInfo echo echo echo --------------------------------------------------------------- -echo check build param[debug/release] +echo check build param[Debug/Release/MinSizeRel/RelWithDebInfo] echo --------------------------------------------------------------- # 编译参数检查 -build_mode=$(echo $1 | tr '[:upper:]' '[:lower:]') -if [[ $build_mode != "release" && $build_mode != "debug" ]]; then +build_mode=$(echo $1) +if [[ $build_mode != "Release" && $build_mode != "Debug" && $build_mode != "MinSizeRel" && $build_mode != "RelWithDebInfo" ]]; then echo "error: unkonow build mode -- $1" exit 1 fi @@ -39,9 +39,6 @@ fi # 提示 echo current build mode: $build_mode -# 环境变量设置 -#export PATH=$qt_cmake_path:$PATH - echo echo echo --------------------------------------------------------------- @@ -54,27 +51,21 @@ if [ -d "$output_path" ]; then rm -rf $output_path fi # 删除编译目录 -build_path=$script_path/../temp +build_path=$script_path/../build_temp if [ -d "$build_path" ]; then rm -rf $build_path fi mkdir $build_path cd $build_path -cmake_params="-DCMAKE_PREFIX_PATH=$qt_cmake_path" -if [ $build_mode == "debug" ]; then - cmake_params="$cmake_params -DCMAKE_BUILD_TYPE=Debug" -else - cmake_params="$cmake_params -DCMAKE_BUILD_TYPE=Release" -fi - +cmake_params="-DCMAKE_PREFIX_PATH=$qt_cmake_path -DCMAKE_BUILD_TYPE=$build_mode -G Xcode" cmake $cmake_params ../.. if [ $? -ne 0 ] ;then echo "cmake failed" exit 1 fi -cmake --build . -j8 +cmake --build . --config $build_mode -j8 if [ $? -ne 0 ] ;then echo "cmake build failed" exit 1 diff --git a/ci/mac/publish_for_mac.sh b/ci/mac/publish_for_mac.sh index 211a1a1..d5894ca 100755 --- a/ci/mac/publish_for_mac.sh +++ b/ci/mac/publish_for_mac.sh @@ -30,7 +30,7 @@ keymap_path=$script_path/../../keymap # config_path=$script_path/../../config publish_path=$script_path/$publish_dir -release_path=$script_path/../../output/mac/Release +release_path=$script_path/../../output/mac/RelWithDebInfo export PATH=$qt_clang_path/bin:$PATH diff --git a/ci/win/build_for_win.bat b/ci/win/build_for_win.bat index edf2258..0e7e584 100644 --- a/ci/win/build_for_win.bat +++ b/ci/win/build_for_win.bat @@ -7,12 +7,11 @@ echo check ENV echo --------------------------------------------------------------- :: 从环境变量获取必要参数 -:: example: D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat -set vcvarsall="%ENV_VCVARSALL%" -:: example: D:\Qt\Qt5.12.5\5.12.5 -set qt_msvc_path="%ENV_QT_PATH%" +:: example: D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat +:: set vcvarsall="%ENV_VCVARSALL%" -echo ENV_VCVARSALL %ENV_VCVARSALL% +:: example: D:\Qt\Qt5.12.5\5.12.5 +:: echo ENV_VCVARSALL %ENV_VCVARSALL% echo ENV_QT_PATH %ENV_QT_PATH% :: 获取脚本绝对路径 @@ -23,96 +22,82 @@ cd /d %~dp0 :: 启动参数声明 set cpu_mode=x86 -set build_mode=debug +set build_mode=RelWithDebInfo set errno=1 echo= echo= echo --------------------------------------------------------------- -echo check build param[debug/release x86/x64] +echo check build param[Debug/Release/MinSizeRel/RelWithDebInfo] echo --------------------------------------------------------------- -:: 编译参数检查 /i忽略大小写 -if /i "%1"=="debug" ( - set build_mode=debug +:: 编译参数检查 +if "%1"=="Debug" ( goto build_mode_ok ) -if /i "%1"=="release" ( - set build_mode=release +if "%1"=="Release" ( + goto build_mode_ok +) +if "%1"=="MinSizeRel" ( + goto build_mode_ok +) +if "%1"=="RelWithDebInfo" ( goto build_mode_ok ) echo error: unkonow build mode -- %1 goto return :build_mode_ok +set build_mode=%1 +set cmake_vs_build_mode=Win32 +set qt_cmake_path=%ENV_QT_PATH%\msvc2019\lib\cmake\Qt5 + if /i "%2"=="x86" ( set cpu_mode=x86 + set cmake_vs_build_mode=Win32 + set qt_cmake_path=%ENV_QT_PATH%\msvc2019\lib\cmake\Qt5 ) if /i "%2"=="x64" ( set cpu_mode=x64 + set cmake_vs_build_mode=x64 + set qt_cmake_path=%ENV_QT_PATH%\msvc2019_64\lib\cmake\Qt5 ) :: 提示 echo current build mode: %build_mode% %cpu_mode% - -:: 环境变量设置 -if /i %cpu_mode% == x86 ( - set qt_msvc_path=%qt_msvc_path%\msvc2017\bin -) else ( - set qt_msvc_path=%qt_msvc_path%\msvc2017_64\bin -) -set PATH=%qt_msvc_path%;%PATH% - -:: 注册vc环境 -if /i %cpu_mode% == x86 ( - call %vcvarsall% %cpu_mode% -) else ( - call %vcvarsall% %cpu_mode% -) - -if not %errorlevel%==0 ( - echo "vcvarsall not find" - goto return -) +echo qt cmake path: %qt_cmake_path% echo= echo= echo --------------------------------------------------------------- -echo begin qmake build +echo begin cmake build echo --------------------------------------------------------------- :: 删除输出目录 -set output_path=%script_path%..\..\output\win\%cpu_mode%\%build_mode% +set output_path=%script_path%..\..\output if exist %output_path% ( rmdir /q /s %output_path% ) :: 删除临时目录 -set temp_path=%script_path%..\temp +set temp_path=%script_path%..\build_temp if exist %temp_path% ( rmdir /q /s %temp_path% ) md %temp_path% cd %temp_path% -set qmake_params=-spec win32-msvc -if /i %build_mode% == debug ( - set qmake_params=%qmake_params% "CONFIG+=debug" "CONFIG+=qml_debug" -) else ( - set qmake_params=%qmake_params% "CONFIG+=qtquickcompiler" -) +set cmake_params=-DCMAKE_PREFIX_PATH=%qt_cmake_path% -DCMAKE_BUILD_TYPE=%build_mode% -G "Visual Studio 16 2019" -A %cmake_vs_build_mode% +echo cmake params: %cmake_params% -:: qmake ../../all.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug" -qmake ../../all.pro %qmake_params% +cmake %cmake_params% ../.. if not %errorlevel%==0 ( - echo "qmake failed" + echo "cmake failed" goto return ) -:: nmake -:: jom是qt的多进程nmake工具 -..\win\jom -j8 +cmake --build . --config %build_mode% -j8 if not %errorlevel%==0 ( - echo "nmake failed" + echo "cmake build failed" goto return ) diff --git a/ci/win/jom.exe b/ci/win/jom.exe deleted file mode 100755 index 2506b4e..0000000 Binary files a/ci/win/jom.exe and /dev/null differ diff --git a/ci/win/publish_for_win.bat b/ci/win/publish_for_win.bat index 5b56112..b9dfcdd 100644 --- a/ci/win/publish_for_win.bat +++ b/ci/win/publish_for_win.bat @@ -7,7 +7,7 @@ echo check ENV echo --------------------------------------------------------------- :: 从环境变量获取必要参数 -:: example: D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat +:: example: D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat set vcvarsall="%ENV_VCVARSALL%" :: 例如 d:\a\QtScrcpy\Qt\5.12.7 set qt_msvc_path="%ENV_QT_PATH%" @@ -47,12 +47,12 @@ set config_path=%script_path%..\..\config if /i %cpu_mode% == x86 ( set publish_path=%script_path%%publish_dir%\ - set release_path=%script_path%..\..\output\win\x86\release - set qt_msvc_path=%qt_msvc_path%\msvc2017\bin + set release_path=%script_path%..\..\output\x86\RelWithDebInfo + set qt_msvc_path=%qt_msvc_path%\msvc2019\bin ) else ( set publish_path=%script_path%%publish_dir%\ - set release_path=%script_path%..\..\output\win\x64\release - set qt_msvc_path=%qt_msvc_path%\msvc2017_64\bin + set release_path=%script_path%..\..\output\x64\RelWithDebInfo + set qt_msvc_path=%qt_msvc_path%\msvc2019_64\bin ) set PATH=%qt_msvc_path%;%PATH%