diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 8008d48..1075e40 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -77,7 +77,7 @@ jobs: shell: cmd env: ENV_VCVARSALL: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat' - ENV_QT_MSVC: 'd:\a\Qt5\5.12.6' + ENV_QT_PATH: 'd:\a\Qt5\5.12.6' run: | call "ci\win\build_for_win.bat" release ${{ matrix.msvc_arch }} # tag 打包 diff --git a/ci/mac/build_for_mac.sh b/ci/mac/build_for_mac.sh new file mode 100755 index 0000000..cf904ea --- /dev/null +++ b/ci/mac/build_for_mac.sh @@ -0,0 +1,91 @@ + +echo +echo +echo --------------------------------------------------------------- +echo check ENV +echo --------------------------------------------------------------- + +# 从环境变量获取必要参数 +# 例如 /Users/barry/Qt5.12.5/5.12.5 +echo ENV_QT_PATH $ENV_QT_PATH + +# 获取绝对路径,保证其他目录执行此脚本依然正确 +{ +cd $(dirname "$0") +script_path=$(pwd) +cd - +} &> /dev/null # disable output +# 设置当前目录,cd的目录影响接下来执行程序的工作目录 +old_cd=$(pwd) +cd $(dirname "$0") + +# 启动参数声明 +build_mode=debug + +echo +echo +echo --------------------------------------------------------------- +echo check build param[debug/release] +echo --------------------------------------------------------------- + +# 编译参数检查 +build_mode=$(echo $1 | tr '[:upper:]' '[:lower:]') +if [[ $build_mode != "release" && $build_mode != "debug" ]]; then + echo "error: unkonow build mode -- $1" + exit 1 +fi + +# 提示 +echo current build mode: $build_mode + +# 环境变量设置 +export PATH=$PATH:$ENV_QT_PATH/clang_64/bin + +echo +echo +echo --------------------------------------------------------------- +echo begin qmake build +echo --------------------------------------------------------------- + +# 删除输出目录 +output_path=$script_path../../output/mac/$build_mode +if [ -d "$output_path" ]; then + rm -rf $output_path +fi +# 删除临时目录 +temp_path=$script_path/../temp +if [ -d "$temp_path" ]; then + rm -rf $temp_path +fi +mkdir $temp_path +cd $temp_path + +qmake_params="-spec macx-clang" +if [ $build_mode == "debug" ]; then + qmake_params="$qmake_params CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug" +else + qmake_params="$qmake_params CONFIG+=x86_64 CONFIG+=qtquickcompiler" +fi + +# qmake ../../all.pro -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug +qmake ../../all.pro $qmake_params +if [ $? -ne 0 ] ;then + echo "qmake failed" + exit 1 +fi + +make -j8 +if [ $? -ne 0 ] ;then + echo "make failed" + exit 1 +fi + +echo +echo +echo --------------------------------------------------------------- +echo finish!!! +echo --------------------------------------------------------------- + +# 恢复当前目录 +cd $old_cd +exit 0 \ No newline at end of file diff --git a/ci/win/build_for_win.bat b/ci/win/build_for_win.bat index 9408a05..edf2258 100644 --- a/ci/win/build_for_win.bat +++ b/ci/win/build_for_win.bat @@ -1,123 +1,129 @@ -@echo off -:: 从环境变量获取必要参数 -:: 例如 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat -set vcvarsall="%ENV_VCVARSALL%" -:: 例如 d:\a\QtScrcpy\Qt\5.12.7 -set qt_msvc_path="%ENV_QT_MSVC%" - -echo= -echo= -echo --------------------------------------------------------------- -echo check ENV -echo --------------------------------------------------------------- - -echo ENV_VCVARSALL %ENV_VCVARSALL% -echo ENV_QT_MSVC %ENV_QT_MSVC% - -:: 获取脚本绝对路径 -set script_path=%~dp0 -:: 进入脚本所在目录,因为这会影响脚本中执行的程序的工作目录 -set old_cd=%cd% -cd /d %~dp0 - -:: 临时文件目录 -set temp_path=%script_path%..\temp - -:: 启动参数声明 -set debug_mode="false" -set cpu_mode=x86 -set errno=1 - -echo= -echo= -echo --------------------------------------------------------------- -echo check build param[debug/release x86/x64] -echo --------------------------------------------------------------- - -:: 编译参数检查 /i忽略大小写 -if /i "%1"=="debug" ( - set debug_mode="true" -) -if /i "%1"=="release" ( - set debug_mode="false" -) - -if /i "%2"=="x86" ( - set cpu_mode=x86 -) -if /i "%2"=="x64" ( - set cpu_mode=x64 -) - -:: 提示 -if /i %debug_mode% == "true" ( - echo current build mode: debug %cpu_mode% -) else ( - echo current build mode: release %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= -echo= -echo --------------------------------------------------------------- -echo begin qmake build -echo --------------------------------------------------------------- - -if exist %temp_path% ( - rmdir /q /s %temp_path% -) -md %temp_path% -cd %temp_path% - -set qmake_params=-spec win32-msvc - -if /i %debug_mode% == "true" ( - set qmake_params=%qmake_params% "CONFIG+=debug" "CONFIG+=qml_debug" -) else ( - set qmake_params=%qmake_params% "CONFIG+=qtquickcompiler" -) - -:: qmake ../../all.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug" -qmake ../../all.pro %qmake_params% -if not %errorlevel%==0 ( - echo "qmake failed" - goto return -) - -nmake -if not %errorlevel%==0 ( - echo "nmake build failed" - goto return -) - -echo= -echo= -echo --------------------------------------------------------------- -echo finish!!! -echo --------------------------------------------------------------- - -set errno=0 - -:return -cd %old_cd% +@echo off + +echo= +echo= +echo --------------------------------------------------------------- +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%" + +echo ENV_VCVARSALL %ENV_VCVARSALL% +echo ENV_QT_PATH %ENV_QT_PATH% + +:: 获取脚本绝对路径 +set script_path=%~dp0 +:: 进入脚本所在目录,因为这会影响脚本中执行的程序的工作目录 +set old_cd=%cd% +cd /d %~dp0 + +:: 启动参数声明 +set cpu_mode=x86 +set build_mode=debug +set errno=1 + +echo= +echo= +echo --------------------------------------------------------------- +echo check build param[debug/release x86/x64] +echo --------------------------------------------------------------- + +:: 编译参数检查 /i忽略大小写 +if /i "%1"=="debug" ( + set build_mode=debug + goto build_mode_ok +) +if /i "%1"=="release" ( + set build_mode=release + goto build_mode_ok +) +echo error: unkonow build mode -- %1 +goto return +:build_mode_ok + +if /i "%2"=="x86" ( + set cpu_mode=x86 +) +if /i "%2"=="x64" ( + set cpu_mode=x64 +) + +:: 提示 +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= +echo= +echo --------------------------------------------------------------- +echo begin qmake build +echo --------------------------------------------------------------- + +:: 删除输出目录 +set output_path=%script_path%..\..\output\win\%cpu_mode%\%build_mode% +if exist %output_path% ( + rmdir /q /s %output_path% +) +:: 删除临时目录 +set temp_path=%script_path%..\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" +) + +:: qmake ../../all.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug" +qmake ../../all.pro %qmake_params% +if not %errorlevel%==0 ( + echo "qmake failed" + goto return +) + +:: nmake +:: jom是qt的多进程nmake工具 +..\win\jom -j8 +if not %errorlevel%==0 ( + echo "nmake failed" + goto return +) + +echo= +echo= +echo --------------------------------------------------------------- +echo finish!!! +echo --------------------------------------------------------------- + +set errno=0 + +:return +cd %old_cd% exit /B %errno% \ No newline at end of file diff --git a/ci/win/jom.exe b/ci/win/jom.exe new file mode 100755 index 0000000..2506b4e Binary files /dev/null and b/ci/win/jom.exe differ